tsfresh中利用select_features函数提取并过滤时间序列特征,所有特征被过滤掉的解决办法

首先利用tsfresh中的 extract_features 函数提取时间特征,

#特征提取
import tsfresh
from tsfresh import extract_features
extracted_features=extract_features(cdata_1,column_id='id',column_sort='time')

tsfresh中利用select_features函数提取并过滤时间序列特征,所有特征被过滤掉的解决办法_第1张图片
过滤特征之前要先去除非数(NaN)
利用impute函数

#特征过滤
from tsfresh import select_features
from tsfresh.utilities.dataframe_functions import impute
impute(extracted_features)

tsfresh中利用select_features函数提取并过滤时间序列特征,所有特征被过滤掉的解决办法_第2张图片
然后利用select_features函数过滤特征

可以看到所有特征都被过滤掉了,一个有用的特征都没能留下来

features_filtered=select_features(extracted_features,y)

tsfresh中利用select_features函数提取并过滤时间序列特征,所有特征被过滤掉的解决办法_第3张图片

解决办法:
select_features函数中加入fdr_level参数

  features_filtered=select_features(extracted_features,y,fdr_level=0.5)

原因:fdr_level参数默认值为fdr_level=defaults.FDR_LEVEL
即0.05
这里的0.05相当于统计学中的p值,表示用于特征过滤的一个标准(阈值),值越小,特征过滤越严格,保留下来的特征越少,所以调高fdr_level即可保留下来更多特征.(这里调整为0.5,也可以调的更高)

效果如图所示:
tsfresh中利用select_features函数提取并过滤时间序列特征,所有特征被过滤掉的解决办法_第4张图片
参考资料:tsfresh_manual

你可能感兴趣的:(tsfresh中利用select_features函数提取并过滤时间序列特征,所有特征被过滤掉的解决办法)