CDA数据分析师 出品

当你想对时间序列数据做分类时,有两种选择,一个是用时间序列特定的方法,比如说说LSTM模型。另外一种方法就是来从时间序列中提取特征从而将这些特征用在有监督的模型上。在这篇文章中,我们来看下如何使用tsfresh包自动的提取时间序列数据。

这份数据的来源是 。这个网站中提供对很多数据集有高精度的模型,如何有兴趣的,可以去详细了解一下。时间序列比一般标准的目标要难一些,这是因为在时间序列里的数据本身每个样本就不是独立的,两个时间上月接近的样本,就越有相关性。比如说温度,如果今天的温度问20度,那明天更加有可能是15或者25度,而不是5或者35度。

这表明这我们不能用常见的分类器来拟合数据,因为对于普通的分类器来说,数据的假设前提都是需要是样本和样本是独立的。并且更重要的是,有的和时间相关的数据集有更加复杂的结构,一个样本包含了多个特征,比如说温度,湿度,分速等等。

虽然说时间序列的数据很特别,但是我们可以使用特征提起的方法将一个序列降低到一个点。比如说,如果我们现在是在对一个月内的天气相关的数据做处理,我们可以使用以下多个特征:

  • 最小最大温度
  • 温度平均值
  • 温度方差
  • 最小最大湿度

这里只是给出了几个例子而已,当然了这里可以有很多种特征,将他们全部列举出来会特别麻烦,幸运的是,有一个tsfresh包,可以自动的提取出很多特征。

tsfresh包在提取出的众多的特征中,需要选取其中最为相关的,最具有预测能力的特征。并且为了防止过拟合,需要首先对数据集做切分,并且只对训练集做特征选择,否则会造成过拟合的问题。tsfresh包使用的是成对检验法来做特征选择的。

我们先来从 数据列表列提取3个时间序列数据集,FordA, FordB, 和Wafre.并且这些数据集中提取特征。首先我们需要将这些1维的数据给上下拼接起来。

In [9]: d.head()Out[9]: 0 1 2 30 1.01430 1.0143 1.01430 1.014301 -0.88485 -1.0375 -0.97771 -1.016902 0.58040 0.5804 0.59777 0.597773 -0.88390 -1.0371 -0.97998 -1.012104 1.10500 1.2856 1.19630 1.25610

需要使用stack做一次拼接

d = d.stack()d.index.rename([ ‘id’, ‘time’ ], inplace = True )d = d.reset_index()

得出以下的结果

In [11]: d.head()Out[11]: id time 00 0 0 1.01431 0 1 1.01432 0 2 1.01433 0 3 1.01434 0 4 1.0143

特征提取的工作量是非常大的,所以tsfresh使用分布计算的方法来高效的做特征提取。另外一种方式就可以直接设置n_jobs为1。具体代码为以下

f = extract_features( d, column_id = “id”, column_sort = “time” )# Feature Extraction: 20it [22:33, 67.67s/it]

这个时候f中有一些特征是空值,可以使用tsfresh提供的impute函数过滤掉这些特征

impute( f )assert f.isnull().sum().sum() == 0

当做特征选择的时候,有一个fdr_level超参数,这指的是所有不相关特征占总体的理论期望阈值,默认值为5%,也就是从生产的特征中,删除掉最不相关的特征,且这部分特征占总比的5%。有的时候我们还是需要加大这个值到0.5,甚至0.9,从而可以选取最重要的特征,并且防止纬度灾难。

In [2]: run select_features.pyloading data/wafer/features.csvselecting features…selected 247 features.saving data/wafer/train.csvsaving data/wafer/test.csv

当数据训练好之后,则就可以开始使用逻辑回归等分类器来对模型做拟合了。

时间序列数据的特征提取相关推荐

  1. 时序数据处理工具-时间序列数据特征提取TsFresh

    时间序列数据特征提取 TsFresh 简介 Tsfresh(TimeSeries Fresh)是一个Python第三方工具包. 它自动计算大量的时间序列数据的特征.此外,该包包含评估这些特征对于回归或 ...

  2. 分析时间序列数据的六个图表

    本文在 Python 中用箱线图.傅里叶变换.熵.自相关和 PCA 分析时间序列数据.数据可视化是任何数据相关项目中最重要的阶段之一.根据数据可视化的对象,有: 1.数据可视化报告结果. 2.数据可视 ...

  3. 大神们都是如何在时间序列中进行特征提取的?看完就懂了!

    作者 |Sharmistha Chatterjee 翻译 | 火火酱~,责编 | 晋兆雨 出品 | CSDN云计算 头图 | 付费下载于视觉中国 介绍 现在,对于各类机构而言,需要收集的数据越来越多, ...

  4. GAN(生成对抗网络)在合成时间序列数据中的应用(第一部分——利用GAN生成合成(synthetic)数据)

    (本文基本是对Jasen 的<Machine Learning for Algorithmic Trading>第二版的第21章进行翻译.改写和复现,并用于我们的实际情况) 1. 准备阶段 ...

  5. python时间序列峰值检测_如何检测和过滤时间序列数据的峰值?

    我有一个pandas用户登录数据框,如下所示:id datetime_login 646 2017-03-15 15:30:25 611 2017-04-14 11:38:30 611 2017-05 ...

  6. 通过 Python 代码实现时间序列数据的统计学预测模型

    来源 | DeepHub IMBA 封图 | CSDN 付费下载于视觉中国 在本篇中,我们将展示使用 Python 统计学模型进行时间序列数据分析. 目标是:根据两年以上的每日广告支出历史数据,提前预 ...

  7. python平稳性检验_时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)...

    时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python) 发布时间:2019-01-10 00:02, 浏览次数:620 , 标签: Python 导读: 本文介绍了数据平稳 ...

  8. MITRE:利用微生物组时间序列数据推断与宿主状态变化相关的特征

    文章目录 MITRE:利用微生物组时间序列数据推断与宿主状态变化相关的特征 热心肠日报 写在前面 主要结果 图1. MITRE通过对时间序列的微生物群落的系统发育信息进行学习,同宿主的状态改变联系起来 ...

  9. R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label)

    R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label) 目录

  10. pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性

    pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations).例如,计算两种商品销售额之间的3个月的滚动相关性 目录

最新文章

  1. 特斯拉Tesla Model 3整体架构解析(上)
  2. Matlab与线性代数 -- 对角矩阵
  3. Bicolored RBS
  4. c/c++ 模板与STL小例子系列一 自建Array数组
  5. ManualResetEvent用法
  6. jquery工具箱旋转动画效果
  7. windows oracle 内存大,如何设计Oracle数据库内存的大小
  8. 什么?iPhone 11起售价不到5400元?
  9. shell脚本验证ssh连通性_ssh远程管理服务
  10. vue常用的按键修饰符
  11. linux 编写sh文件,linux编写shell脚本程序one官方
  12. LIRe 源代码分析 2:基本接口(DocumentBuilder)
  13. ***编程DIY (Delphi版) - 第2篇 单实例运行
  14. SPSS 分层回归(图文+数据集)【SPSS 027期】
  15. 【Android 安装包优化】Android 中使用 SVG 图片 ( 批量转换 SVG 格式图片为 Vector Asset 矢量图资源 )
  16. python如何爬有道翻译_python 爬有道翻译
  17. 做网站推广最实用的88种网站推广方法
  18. 应用分发平台之苹果超级签名流程分析及API错误
  19. DFT与DTFT区别
  20. 技术团队如何开展团队分享

热门文章

  1. android 银行接口,iOS/Android银行卡识别sdk/开发包/api/接口
  2. 人人都是产品经理面试题
  3. 区块链产品经理规范与总结
  4. 【Python的自学之路】(八):文字游戏分享
  5. SHA1hash算法C语言实现
  6. Spss乱码问题的解决方法
  7. 帝国CMS7.5二次元COS漫画分享漫展网站源码
  8. nero linux4 序列号,nero9序列号_可以永久使用的nero9序列号
  9. 射频微电子学_射频人的双十二,应该这样过……
  10. Windows网络编程之(二)Socket通信非阻塞模式Select(TCP和UDP)