特征工程:
1.数据预处理
(1) 对心电特征(时间序列特征)进行行转列处理,同时为每个心电信号加入时间步特征time
(2)将处理后的心电特征加入到训练数据中,同时将训练数据label列单独存储
2.特征工程
(1)使用 tsfresh 进行时间序列特征构造
特征抽取 Tsfresh(TimeSeries Fresh)是一个Python第三方工具包。 它可以自动计算大量的时间序列数据的特征。此外,该包还包含了特征重要性评估、特征选择的方法,因此,不管是基于时序数据的分类问题还是回归问题,tsfresh都会是特征提取一个不错的选择。官方文档:Introduction — tsfresh 0.17.1.dev24+g860c4e1 documentation
(2)特征选择
train_features中包含了heartbeat_signals的779种常见的时间序列特征(所有这些特征的解释可以去看官方文档),这其中有的特征可能为NaN值(产生原因为当前数据不支持此类特征的计算),使用以下方式去除NaN值:
from tsfresh.utilities.dataframe_functions import impute
#去除抽取特征中的NaN值
impute(train_features)
接下来,按照特征和响应变量之间的相关性进行特征选择,这一过程包含两步:首先单独计算每个特征和响应变量之间的相关性,然后利用Benjamini-Yekutieli procedure [1] 进行特征选择,决定哪些特征可以被保留。
from tsfresh import select_features
#按照特征和数据label之间的相关性进行特征选择
train_features_filtered = select_features(train_features, data_train_label)
References
[1] Benjamini, Y. and Yekutieli, D. (2001). The control of the false discovery rate in multiple testing under dependency. Annals of statistics, 1165–1188