此示例演示如何准备Simulink®模型,该模型根据智能手机传感器信号对万博1manbetx人类活动进行分类,以生成代码和部署智能手机。此示例提供了两个准备部署到Android的Simulink模型™ 设备和iOS设备。安装目标设备所需的支持包后,培训分类模型并将Simulink模型部署到设备。万博1manbetx
加载humanactivity
数据集。
负载humanactivity
的humanactivity
数据集包含24075项对人类五种不同身体活动的观察:坐、站、走、跑和跳舞。每次观测都有60个特征,这些特征是从智能手机加速计传感器测量的加速度数据中提取的。数据集包含以下变量:
actid
-包含整数形式的活动ID的响应向量:1、2、3、4和5,分别表示坐、站、走、跑和跳舞
actnames
-与整数活动ID对应的活动名称
壮举
-包含60个特征的24,075个观测值的特征矩阵
羽毛标签
-60个特征的标签
传感器HAR(人类活动识别)应用程序[1]用于创建humanactivity
数据集。当用这个应用程序测量原始加速度数据时,一个人把智能手机放在口袋里,这样智能手机就会倒过来,屏幕朝向自己。然后软件相应地校准测量的原始数据,并从校准数据中提取60个特征。校准和特征提取的详细信息请参见[2]和[3]后面描述的Simulink模型也使用原始万博1manbetx加速度数据,包括用于校准和特征提取的块。
本示例使用90%的观察结果来训练一个分类五种人类活动的模型,并使用10%的观察结果来验证训练的模型。使用cvpartition
为测试集指定10%的坚持值。
rng(“默认”)%为了再现性分区=cvpartition(活动,“坚持”,0.10);trainingInds=培训(分区);%训练集的索引XTrain=feat(trainingids,:);YTrain=actid(trainingids);testInds=test(Partition);%测试集索引XTest=feat(testInds,:);YTest=激活(测试);
转换特征矩阵XTrain
和响应向量钇
进入表格,以加载分类学习者应用程序中的培训数据集。
array2table([XTrain YTrain]);
为表的每列指定变量名。
tTrain.Properties.VariableNames = [featlabels '“活动”];
使用分类学习器应用程序训练分类模型。要打开分类学习者应用程序,请输入分类学习者
在命令行。或者,单击应用程序选项卡,并单击控件右侧的箭头应用程序部分画廊开放。然后,在机器学习与深度学习点击分类学习者.
在分类学习者选项卡,在文件部分中,点击新会议并选择从工作空间.
在“从工作区新建会话”对话框中,单击相应的箭头数据集变量,然后选择该表t雨水
.分类学习者从表中检测预测值和响应。
默认选项是5倍交叉验证,以防止过拟合。点击开始会话. 分类学习器加载数据集并绘制前两个特征的散点图。
在分类学习者选项卡中,单击右边的箭头模型类型部分画廊开放。然后,在集成分类器点击提高了树.
的当前模型摘要窗格显示增强树集合模型的默认设置。
在分类学习者选项卡,在训练部分中,点击火车.当训练完成后,模型窗格显示5倍交叉验证的分类精度。
在分类学习者选项卡,在出口部分中,点击出口模式,然后选择导出压缩模型. 点击好啊在对话框中。结构trainedModel
显示在MATLAB®工作区中。田野分类符号
属于trainedModel
包含紧凑模型。从结构中提取训练过的模型。
ClassificationnSemble=trainedModel.ClassificationnSemble;
或者,您可以在命令行中训练相同的分类模型。
模板=模板树(“MaxNumSplits”, 20岁,“复制”,对);ClassificationnSemble=fitcensemble(XTrain、YTrain、,...“方法”,“AdaBoostM2”,...“NumLearningCycles”,30,...“学习者”样板...“LearnRate”, 0.1,...“类名”,[1; 2; 3; 4; 5]);
对数据进行5倍交叉验证classificationEnsemble
并计算验证精度。
partitionedModel = crossval (classificationEnsemble,“KFold”,5); validationAccuracy=1-kfoldLoss(partitionedModel)
validationAccuracy = 0.9833
评估测试数据集上的性能。
testAccuracy =第一(classificationEnsemble XTest、欧美)
测试精度=0.9759
经过训练的模型对测试数据集上97.59%的人类活动进行了正确分类。这一结果证实了训练模型与训练数据集没有过拟合。
请注意,根据您的操作系统,精度值可能略有不同。
对于包含分类模型对象的代码生成,请使用saveLearnerForCoder
和loadLearnerForCoder
.
使用保存经过训练的模型saveLearnerForCoder
.
saveLearnerForCoder (classificationEnsemble“EnsembleModel.mat”);
功能块预测活动在Simuli万博1manbetxnk模型中,使用loadLearnerForCoder
并使用训练后的模型对新数据进行分类。
现在您已经准备了一个分类模型,您可以打开Simulink模型,这取决于您拥有的智能手机的类型,并将模型部署到您的设备上。万博1manbetx注意,Simulink模型需万博1manbetx要EnsembleModel.mat
文件和校准矩阵文件slexHARAndroidCalibrationMatrix.mat
或slexHARiOSCalibrationMatrix.mat
。如果单击此页面右上角的按钮并在MATLAB中打开此示例,则MATLAB将打开包含这些校准矩阵文件的示例文件夹。
类型狼蛛纲
打开Android部署的万博1manbetxSimulink模型。
类型slexHARiOSExample
打开用于iOS部署的Si万博1manbetxmulink模型。您可以在Mac OS平台上打开模型。
这两个Simul万博1manbetxink模型基于智能手机传感器测量的加速度数据对人类活动进行分类。模型包括以下模块:
的加速计块从设备上的加速计传感器接收原始加速度数据。
的校准块是一个MATLAB函数块,校准原始加速度数据。该块使用的校准矩阵slexHARAndroidCalibrationMatrix.mat
文件或slexHARiOSCalibrationMatrix.mat
文件如果单击此页面右上角的按钮并在MATLAB中打开此示例,则MATLAB将打开包含这些文件的示例文件夹。
显示模块Acc X,Acc Y和Acc Z连接到校准阻止并显示设备上每个轴的校准数据点。
每一个缓冲器阻碍,X缓冲,Y缓冲区和Z缓冲区,缓冲加速度计轴的32个样本,缓冲帧之间有12个重叠样本。采集20个样本后,每个样本缓冲器块将20个样本与前一帧中的12个样本合并,并将总共32个样本传递给提取特征块每个缓冲器块每0.1秒接收一个输入样本,并每2秒输出一个包含32个样本的缓冲帧。
的提取特征块是一个MATLAB函数块,从32个加速度计样本的缓冲帧中提取60个特征。该功能块使用DSP系统工具箱™和信号处理工具箱™。
的预测活动块是一个MATLAB函数块,它从EnsembleModel.mat
使用文件loadLearnerForCoder
并利用提取的特征对用户活动进行分类。输出为1到5之间的整数,分别对应坐、站、走、跑和跳舞。
的预测活动块显示设备上已分类的用户活动值。
的视频输出子系统使用多端口开关块选择相应的用户活动图像数据以显示在设备上转换为RGB块将选定图像分解为单独的RGB向量,并将图像传递给活动展示块。
要将Simulink模型部署万博1manbetx到您的设备,请遵循下面的步骤在Android设备上运行模型(万博1manbet万博1manbetxx针对Android设备的Simulink支持包)或在苹果iOS设备上运行模型(万博1manbet万博1manbetxx适用于Apple iOS设备的Simulink支持包)。在您的设备上运行模型,以与前面所述收集培训数据相同的方式放置设备,然后尝试五项活动。模型将相应地显示已分类的活动。
为确保模型的准确性,您需要按照收集培训数据所述的方式放置设备。如果要将设备放置在不同的位置或方向,请以自己的方式收集数据,并使用数据训练分类模型。
模型的准确性可能与测试数据集的准确性不同(testaccuracy
为了改进模型,可以考虑使用额外的传感器和更新校准矩阵。此外,可以使用音频工具箱将另一个输出块添加到输出子系统中进行音频反馈。™. 说点什么™ write block可将分类活动和加速数据从设备发布到物联网。有关详细信息,请参阅https://thingspeak.com/。
[1] El Helou, A. Sensor HAR识别App。MathWorks文件交换//www.tianjin-qmedu.com/matlabcentral/fileexchange/54138-sensor-har-recognition-app
[2] STMicroelectronics,AN4508应用说明。“低g三轴加速计的参数和校准”,2014年。
[3] El Helou,A.传感器数据分析。MathWorks文件交换//www.tianjin-qmedu.com/matlabcentral/fileexchange/54139-sensor-data-analytics-french-webinar-code
loadLearnerForCoder
|saveLearnerForCoder
|fitcensemble
|预测