利用手机数据进行人类活动学习
人类活动传感器数据包含从人们在进行不同活动(走路、躺着、坐着等)时佩戴的智能手机上的传感器测量得出的观察结果。本例的目标是提供一种策略来构建一个分类器,该分类器可以在给定传感器测量的情况下自动识别活动类型。
版权所有MathWorks, Inc. 2015
内容
数据说明
数据集包括加速度计和陀螺仪在50Hz下捕获的数据。原始传感器数据包含2.56秒的固定宽度滑动窗口(128读数/窗口)。受试者进行的活动包括:“走”、“爬楼梯”、“坐”、“站”和“躺”
如何获取数据:执行downloadSensorData并按照说明下载并从源网页提取数据。在文件被解压缩后运行saveSensorDataAsMATFiles.这将创建两个MAT文件:rawSensorData_train而且rawSensorData_test用原始传感器数据
- total_acc_ (x / y / z) _train:原始加速度计传感器数据
- body_gyro_ (x / y / z) _train:原始陀螺仪传感器数据
- trainActivity:培训数据标签
- testActivity:测试数据标签
参考:
Davide Anguita, Alessandro Ghio, Luca Oneto, Xavier Parra和Jorge L. Reyes-Ortiz。基于多类硬件友好支持向量机的智能手机人体活动识别。金宝app环境辅助生活国际研讨会(IWAAL 2012)。威托利亚-加斯泰兹,西班牙。2012年12月
从源下载数据
如果您是第一次运行这个脚本,请确保您执行了这些函数。
- downloadSensorData:此函数将下载数据集并将其内容解压缩到一个名为UCI HAR dataset的文件夹中。此文件夹必须在执行之前存在saveSensorDataAsMATFiles
如果~ (“UCI HAR数据集”,“文件”) downloadSensorData;结束
从单个文件加载数据并保存为MAT文件以供重用
- saveSensorDataAsMATFiles:此函数将从单个源文件加载数据,并将数据保存在单个MAT文件中,以便于访问
如果~ (“rawSensorData_train.mat”,“文件”)存在(“rawSensorData_test.mat”,“文件”) saveSensorDataAsMATFiles;结束
负荷训练数据
负载rawSensorData_train
显示数据汇总
plotRawSensorData (total_acc_x_train total_acc_y_train,...total_acc_z_train trainActivity, 1000)
创建Table变量
rawSensorDataTrain = table(...好,好,好,好,...Body_gyro_x_train, body_gyro_y_train, body_gyro_z_train);
预处理培训数据:特征提取
让我们从一个简单的预处理技术开始。由于原始传感器数据包含2.56秒的固定宽度滑动窗口(128个读数/窗口),我们从每128个点的简单平均特征开始
humanActivityData = varfun(@Wmean,rawSensorDataTrain);humanActivityData。activity = trainActivity;
训练一个模型,并使用分类学习器评估其性能
classificationLearner
附加特征提取
T_mean = varfun(@Wmean, rawSensorDataTrain);T_stdv = varfun(@Wstd,rawSensorDataTrain);T_pca = varfun(@Wpca1,rawSensorDataTrain);humanActivityData = [T_mean, T_stdv, T_pca];humanActivityData。activity = trainActivity;
使用新特性来训练模型并评估其性能
classificationLearner
负载测试数据
负载rawSensorData_test
在测试数据上可视化分类器的性能
步骤1:创建一个表
rawSensorDataTest =表...测试,测试,测试,测试...Body_gyro_x_test, body_gyro_y_test, body_gyro_z_test);第二步:从原始传感器数据中提取特征。T_mean = varfun(@Wmean, rawSensorDataTest);T_stdv = varfun(@Wstd,rawSensorDataTest);T_pca = varfun(@Wpca1,rawSensorDataTest);humanActivityData = [T_mean, T_stdv, T_pca];humanActivityData。activity = testActivity;第三步:使用训练过的模型来预测新的传感器数据上的活动确保您已从。导出'trainedClassifier'% ClassificationLearnerplotActivityResults (trainedClassifier rawSensorDataTest humanActivityData, 0.1)