赞
踩
hctsa对时间序列进行特征提取的使用流程
时间序列在许多领域中都有重要应用,如信号分析、金融量化分析、气象分析以及人体行为分析等等。通常对时间序列的处理需要进行特征分析, 关于特征提取分析的问题,主要是时域和频域特征,用滑动窗口提取特征,比如平均数、方差、过零率等,还有傅里叶变换后的幅度、频率、均值等。而这种特征分析通常需要一些特定领域内的专业知识,因此也就进一步提升了预处理的门槛。例如压力脉搏信号,不仅需要分析时域的幅度、均值、周期性等,也需要分析频域中的基频和倍频信号,以及各种频带的功率谱等等。
目前关于自动提取时间序列特征的开源库,包括python版本的tsfresh,下载链接https://github.com/blue-yonder/tsfresh/tree/master/tsfresh, 以及Matlab版本的hctsa,下载链接https://github.com/benfulcher/hctsa。这两个库都有比较详细的英文使用手册,但对没有机器学习基础的同学使用还是比较困难,目前工作中对tsfresh暂时还没有用到,下面给出hctsa的使用步骤。数据以TimeSeries中数据INP_test_ts.txt为例,注意先行其中的分类标签都改为1个,3个互不相同为宜。
step1:安装hctsa代码包,运行install.m文件;
step2:添加hctsa代码包运行需要的所有路径,运行startup.m文件;
step3:初始化输入函数:TS_init(INP_ts,INP_mops,INP_ops,beVocal,outputFile);其中
INP_ts: 格式可以参考文件夹TimeSeries里面的HCTSA.mat或INP_test_ts.txt,此项必须有输入;
INP_mops: 主操作函数定义, 默认输入为DataBase文件夹中的INP_mops.txt;
INP_ops: 计算序列特征的函数定义,默认输入为DataBase文件夹中的INP_mops.txt;
beVocal: 长度为3的逻辑行向量,是否显示对应输入变量脚本运行的进度信息,默认有输入的变量都显示;
outputFile: 输出文件名,包括主操作函数(MasterOperations),特征计算函数(Operations),原始数据(TimeSeries),初始化的特征值矩阵(TS_DataMat)、计算每个特征需要的时间(TS_Calc-Time)以及每个特征质量标签;
备注: TimeSeries是单一变量,均匀采样,按时间排序的序列,每个序列可以不等长。
图1 原始信号
step4:计算原始数据(TimeSeries)特征,生成的值对特征值矩阵(TS_DataMat)、计算每个特征需要的时间(TS_Calc-Time)以及每个特征质量标签进行覆盖,TS_compute(doParallel,ts_id_range,op_id_range,computeWhat,customFile,beVocal)
doParallel: 1开启并行运算,0不开启,默认为0;
ts_id_range: 时间序列范围,如[2:100],默认为所有序列;
op_id_range: 操作序列范围,默认为所有操作(示例为7873个)
computeWhat: 对应质量标签的取值;
customFile: 输出文件名,默认为HCTSA.mat;
beVocal: 逻辑变量,是
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。