智能穿戴设备上安装了很多微型传感器,包括:重力感应器、加速度传感器、方向感应器、三轴陀螺仪、距离传感器、光线传感器、方位感应器等等。
BasicMotions数据集就是利用智能手表上的3D加速计和3D陀螺仪传感器分别对步行、休息、跑步和打羽毛球四项活动进行数据采集,该数据集由四名学生戴着智能手表进行,参与者被要求分别做四项运动,间隔0.1秒对数据进行一次采样,持续10秒,每项运动采集五次数据。
通过机器学习建模,构建分类预测模型。
1. 数据预处理
from sklearn import metrics
from sklearn.model_selection import train_test_split
from sktime.datasets import load_basic_motions
X, y = load_basic_motions(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)
print(X.dtypes)
2. 模型训练
对多元时序数据进行机器学习建模可以采用很多常用的算法模型,但时序数据与截面数据有着本质的区别。例如,在向量距离计算上,截面数据向量通常采用欧几里得公式计算,但时间序列数据存在多种相似或距离函数,其中最突出的是DTW(Dynamic Time Warping,动态时间归整)算法。可以将6个维度的传感数据串联成1维数据,然后通过Knn算法(dtw)进行快速分类建模。也可以使用Bespoke分类算法进行多元变量建模;本文选用MrSEQLClassifier包提供的Bespoke分类算法进行演示:
from sktime.classification.shapelet_based import MrSEQLClassifier
# Bespoke classification algorithms
ms = MrSEQLClassifier()
# fit training data
ms.fit(X_train, y_train)
predicted = ms.predict(X_test)
# Classification accuracy
print("Accuracy with mr-seql: %2.3f" % metrics.accuracy_score(y_test, predicted))
Accuracy with mr-seql: 1.000