火箭变换只给我一行

问题描述 投票:0回答:1

需要火箭转型方面的帮助

from sktime.transformations.panel.rocket import Rocket
from sklearn.datasets import make_classification

X, y = make_classification(
    n_samples=1000, # 1000 observations 
    n_features=5, # 5 total features
    n_informative=3, # 3 'useful' features
    n_classes=2, # binary target/label 
    random_state=999 # if you want the same results as mine
)

dataset = pd.DataFrame(X)
# give custom names to the features
dataset.columns = ['X1', 'X2', 'X3', 'X4', 'X5']
# Now add the label as a column
dataset['y'] = y

rocket = Rocket(num_kernels=1000, random_state=0)
rocket.fit(dataset)
X_train_transform = rocket.transform(dataset)

X_train_transform.shape
#(1, 2000)

我尝试按照这个例子 https://www.kaggle.com/code/vikram12301/rocket-time-series-classifier

我尝试了 Rocket 转换,但结果发现它只给了我 1 行。 我想用 1000 个观察值进行火箭变换。 我做错了什么吗?真的需要帮助

python time-series transform
1个回答
0
投票

您应该将 2d df 转换为嵌套 df。嵌套 df 意味着您将一个特征在不同时间步长的所有记录值放入 df 的单个单元格中。因此,每一行都是一个实体(假设是一家公司)的时间序列,每一列都是一个特征(几列例如销售额、收入、nb_employees)。嵌套后,每个单元格都将成为特定公司的某个功能的 TS,例如 A 公司多年来的销售变化。

要调用其内置方法,请使用:

from sktime.datatypes._panel._convert import from_2d_array_to_nested
df_nested = from_2d_array_to_nested(df_2d)

trf = Rocket(num_kernels=1000) 
trf.fit(df_nested ) 
df_features = trf.transform(df_nested ) 

请注意,如果您为多家公司检查了 1 个功能,则在嵌套时您将拥有一个仅包含 1 列的嵌套 df。

© www.soinside.com 2019 - 2024. All rights reserved.