CDA数据分析师制
如果gjdqc想对时间序列数据进行分类,有两个选择。 一个是按时间顺序确定的方法。 例如,谈谈LSTM模型。 另一种方法是从时间序列中提取特征并将这些特征用于有监督的模型。 在本文中,我们将看一下如何使用tsfresh包自动提取时间序列数据。
这个数据的来源是。 该网站为许多数据集提供了高精度的模型。 让我们仔细看看你对它有什么兴趣。 时间序列比一般标准的目标要难一些。 这是因为时间序列上的数据本身并不是每个样本都是独立的,而是两个时间越接近上个月的样本越有相关性。 例如温度,如果问今天的温度是20度的话,明天不是5度或35度,而是15度或25度的可能性会变高。
这表明,一般分类器无法拟合数据,因为普通分类器假定样本和样本必须独立。 更重要的是,一些与时间相关的数据集具有更复杂的结构,一个样本包含温度、湿度、分速等多个特征。
虽然说时间序列的数据很特别,但用特征提取的方法可以把一个序列降低到一个点。 例如,在处理有关一个月内天气的数据时,可以使用以下几个特征:
最小最大温度温度平均值温度方差最小最大湿度在这里只给出了几个例子。 当然,这里可以列举各种各样的特征。 列举所有这些特别麻烦,但幸运的是,有一个可以自动提取很多特征的tsfresh包。
tsfresh软件包在提取的众多特征中,需要选择最相关、最具预测能力的特征。 另外,为了防止过拟合,必须首先对数据集进行分割,只对训练集进行特征选择。 否则,会出现过拟合问题。 tsfresh包采用配对检验法进行特征选择。
首先,从数据列表列中提取3个时间序列数据集、FordA、FordB、Wafre .从这些数据集中提取特征。 首先,必须将这些一维数据上下连接。
in : d.head () out :012301.014301.014301.014301.014301-0.88485-1.0375-0.97771-1.0169020
需要使用堆栈进行拼接
d=d .堆栈(d .索引.重命名) [“标识”,“时间”,放置=真) d=d .重置_索引) ) )。
得到以下结果
in : d.head () out :标识时间0001.0143101.01432021.01433031.01434041.0143
由于特征提取的工作量非常大,tsfresh利用分布计算的方法有效地进行特征提取。 另一种方法是将n_jobs直接设置为1。 具体代码如下
f=提取功能(d,列id=' id ',列排序='时间' ) #功能提取336020 it [ 22336033,66033,6600 ]
此时,f的几个特征为空值,可以利用tsfresh提供的impute函数对这些特征进行过滤
输入(f )资产空值.求和.求和) )==0
选取特征时,有一个fdr_level超级参数。 这意味着所有不相关的特征都占据了整体理论阈值,缺省值为5%。 也就是说,从生产的特征中删除最不相关的特征,该部分特征占总比率的5%。 在某些情况下,为了选择最重要的特征并防止纬度灾害,需要将该值增大到0.5,甚至0.9。
in [2] :运行选择_功能. pyloadingdata/wafer /功能. csvselectingfeatures .所选247功能.服务
数据经过训练后,就可以使用逻辑回归等分类器来拟合模型。