6.1 时间序列分类问题
本节将直接进入实战,以原始的脑电图时间序列数据为例,演示如何使用机器学习模型进行时间序列分类。 该脑电图数据集共有5个类别, - 睁眼和闭眼的健康人脑电图记录 - 癫痫患者在无癫痫发作期间的两个非癫痫相关区域脑电图记录 - 癫痫发作期间脑电图的颅内记录 本节将根据原始时间序列构造特征,再进行机器学习预测脑电图的分类。
import matplotlib.pyplot as plt
from tsfresh import extract_features
import pandas as pd
import numpy as np
from sklearn.model_selection
import train_test_split from sklearn.ensemble
import RandomForestClassifier
import xgboost as xgbeeg = pd.read_csv('data\eeg.csv')
eeg.head()id
times
measurements
classes
0
0
0.000000
40.0
Z
1
0
0.005762
48.0
Z
2
0
0.011523
35.0
Z
3
0
0.017285
5.0
Z
4
0
0.023047
-40.0
Z
# 观察不同类别的时间序列特征,为后面构造特征做准备
plt.subplot(3, 1, 1)
plt.plot(eeg[eeg.id==0]['times'], eeg[eeg.id==0]['measurements'])
plt.legend(eeg.loc[0,'classes'])
plt.subplot(3, 1, 2)
plt.plot(eeg[eeg.id==300]['times'],eeg[eeg.id==300]['measurements'])
plt.legend(eeg.loc[300*4097,'classes'])
plt.subplot(3, 1, 3)
plt.plot(eeg[eeg.id==450]['times'],eeg[eeg.id==450]['measurements'])
plt.legend(eeg.loc[450*4097,'classes'])
plt.tight_layout()
将时间序列以可视化的形式画出可以为我们构造特征提供些许指导。 例如,从图表中发现,Z 类和 G 类的数据比 S 类曲折更少。此外,每个类都有相当不同的值域范围,数据点的分布似乎也有所不同。
本节将使用两种经典集成学习方法,随机森林和xgboost
使用默认参数随机森林算法的准确率是0.74
使用默认参数随机森林算法的准确率是0.72
通过上述流程,我们演示了如何在时间序列数据上使用基于机器学习的算法,这只是一个最基本的例子,如果想获得更为准备的模型,可以从特征构造和模型调参等角度进行进一步优化。
Last updated
Was this helpful?