需要火箭转型方面的帮助
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 个观察值进行火箭变换。 我做错了什么吗?真的需要帮助
您应该将 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。