本次学习的是特征工程,且主打的是时间序列相关的特征。主要学习了tsfresh包中的extract_features,select_features,impute 三个函数的使用。
其中,extract_features的功能是对一个已经整理成样本id,时间,数值形式的df进行特征提取,提取出时间序列相关的特征。使用方式是extract_features(df,column_id = 样本id,column_sort = 'time')
impute的功能是剔除生成特征中的Nan值,因为extract_features会生成固定的一组特征,其中有些特征对于输入数据的数据类型不适用,会产生Nan值。使用方法是impute(特征df)
select_features的功能是从大量特征中寻找有用特征,使用方法是select_features(特征df,y值df)
另外,为了把df处理成extract_features函数可用的形式,需要数据预处理,流程如下:
1.把df中的样本拍平,做成样本id,数值形式的series train_heartbeat_df = data_train["heartbeat_signals"].str.split(",", expand=True).stack() 2.把series增加上index,变回df train_heartbeat_df = train_heartbeat_df.reset_index() 3.把level_0列变成index。level_0列实际上是样本id train_heartbeat_df = train_heartbeat_df.set_index("level_0") 4.把上一步得到的index的名称去掉 train_heartbeat_df.index.name = None 5.把剩余两列列名进行修改 train_heartbeat_df.rename(columns={"level_1":"time", 0:"heartbeat_signals"}, inplace=True) 6.把数值列从string改成float格式 train_heartbeat_df["heartbeat_signals"] = train_heartbeat_df["heartbeat_signals"].astype(float)