赞
踩
Tsfresh(TimeSeries Fresh)是一个Python第三方工具包。 它自动计算大量的时间序列数据的特征。此外,该包包含评估这些特征对于回归或分类任务的解释能力和重要性的方法。无论是基于时序数据的分类还是预测,作为特征提取的工具,tsfresh将会是一个不错的选择。
使用pip安装即可。
pip install tsfresh
该包提供了一个机器人故障的数据集,可以加载用于尝试使用。(这个数据集不大)点击链接下载后放置到该包配置的data文件夹下(user文件夹中,实在找不到数据集可以私戳我)。
我这里使用Jupyter Notebook,其实什么环境都是可以的。
导入数据集
import tsfresh
from tsfresh.examples.robot_execution_failures import download_robot_execution_failures, load_robot_execution_failures
download_robot_execution_failures()
timeseries, y = load_robot_execution_failures()
数据探索
from tsfresh import extract_features
extraced_features = extract_features(timeseries, column_id='id', column_sort='time')
extraced_features.head()
提取过程会实时显示进度,应该是使用tqdm模块。
提取结果如下图所示。
可以看到提取特征之后id相同的特征序列合一了,但是每一个id的数据列数非常大,这些就是提取得到的特征。如id=1的数据关于F_x有15个数据,现在对着15个数据做统计学处理得到15个数据的平均值、方差等,每个值都是一列,其他F_y等也是如此,所以维度会很大。
简单过滤
不是所有统计值都有意义的,观察特征提取的数据集可以发现有很多无意义的控制,可以删除。(根据y集将相关性低的去除),代码如下。
from tsfresh import select_features
from tsfresh.utilities.dataframe_functions import impute
impute(extraced_features)
filtered_features = select_features(extraced_features, y)
filtered_features.head()
上述代码的结果为从4764列减少到了631列,这个降维还是比较有效的。
直接提取加过滤
可以使用如下代码。
from tsfresh import extract_relevant_features
directed_features = extract_relevant_features(timeseries, y, column_id='id', column_sort='time')
directed_features.head()
结果和上面是一致的,现在你可以使用特征提取的数据集去训练模型了。
只是按照官方文档说明了tsfresh最浅显的功能,事实上,这个包特征提取能力要强大太多了。更详细的内容可以查看官方教程(英文版,可以使用Chrome自带的翻译)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。