python工具包-时间序列数据特征提取TsFresh

版权声明:转载请注明出处 https://blog.csdn.net/zhouchen1998/article/details/88773929

时间序列数据特征提取 TsFresh

  • 简介

    • sfresh是一个python包。(TimeSeries Fresh)
    • 它自动计算大量的时间序列数据的特征。此外,该包包含评估这些特征对于回归或分类任务的解释能力和重要性的方法。
    • 无论是基于时序数据的分类还是预测,tsfresh都将会是一个不错的选择。
  • 安装

    • 使用pip
      • pip install tsfresh
  • 简单使用

    • 数据集
    • 编辑环境
      • 我这里使用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()
          
        • 不妨看一下数据集格式
          • 对于特征集,id是不同的机器人标识,F_x到T_z是时序数据标识,也就是说,对于F_x这个特征,id为1的机器人有15个数据记录,按照time列的大小排序,其余F_y等也是如此。(注意:有时候时序数据不会这么友好,而是在一条记录中给出的
          • 对于标签集,利用id标识某个机器人是否故障。
      • 简单抽取特征
        • 代码如下
          •   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自带的翻译)。

猜你喜欢

转载自blog.csdn.net/zhouchen1998/article/details/88773929