目录
为什么要对时间序列进行图像编码
来源:
Wang 等人写的一篇论文:Imaging Time-Series to Improve Classification and Imputation,通过将时间序列图像化提高分类和推断。
他将流量的每个字节转换成像素,由此来把流量转换为图片,再将图片作为CNN的输入进行训练与分类,得到的二分类和多分类准确率分别是100%和99.17%。
为什么对时间序列图像化能够提高模型的分类准确率?
因为一维信号可能存在数据维度和丰富度的不足,限制了模型从数据中中提取出复杂特征和特征局部相关性的能力。
GAF(Gramian Angular Field)将时间序列映射为图像,侧重于周期性和幅度信息的表达,增加了数据的维度和丰富度。
Python-pyts库
pyts库是一个用于时间序列分析的开源Python库。它提供了一系列的数据预处理方法、特征提取技术以及常用的机器学习模型,可以用于单变量和多变量时间序列数据分析。
使用格拉姆角场GramianAngularField函数
先导入pyts库
pip install pyts
导入脉率变异性数据。data_x 维度是90×80,即90个样本,80维特征。
# 导入数据HappyHeartRate
data = pd.read_csv("../AnxietyPPData.csv")
data_x = data.iloc[:,0:80]#选择输入数据
data_y = data.iloc[:,80]#选择输出数据
进行归一化。将数据缩放到一个固定的范围(0到1),使得不同特征的数据在同一尺度上,便于比较和计算。(按列计算,把每一列特征都缩放到0~1)
#归一化化处理
from sklearn import preprocessing
mm = preprocessing.MinMaxScaler()
data_x = mm.fit_transform(data_x