主要内容

预测类标签使用ClassificationECOC预测块

自从R2023a

这个例子展示了如何使用ClassificationECOC预测块的标签预测模型®。金宝app块接受一个观察(预测数据)并返回预测类标签,观察类分数,和positive-class分数二进制学习者使用训练有素的纠错输出编码(ECOC)分类模型。

训练分类模型

加载humanactivity数据集。该数据集包含24075 5观察物理人类活动:坐着,站着,散步、跑步、和跳舞。每个观察60特性提取加速度数据衡量智能手机加速计传感器。

负载humanactivity

创建预测X作为一个数字矩阵包含60 24075年观测特性。创建类标签Y作为一个数值向量包含活动id的整数:1,2,3,4,5代表坐着,站着,散步、跑步、和跳舞。

X =壮举;Y = actid;

随机观测分割成分层的训练集和测试集,使用类的信息Y。使用大约80%的观察来训练一个ECOC模型,和20%的观察来测试新数据训练模型的性能。

rng (“默认”)%的再现性分区简历= cvpartition (Y,“坚持”,0.20);

提取训练和测试指标。

trainingInds =培训(简历);testInds =测试(简历);

指定的培训和测试数据集。

XTrain = X (trainingInds:);YTrain = Y (trainingInds);XTest = X (testInds:);欧美= Y (testInds);

火车一个ECOC分类模型通过训练数据XTrainYTrainfitcecoc函数。

ecocMdl = fitcecoc (XTrain YTrain);

ecocMdl是一个ClassificationECOC模型。可以使用点符号来访问的属性ecocMdl。例如,输入ecocMdl.CodingMatrix显示模型的编码设计矩阵。

ecocMdl.CodingMatrix
ans =5×101 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1

编码设计矩阵的每一行对应一个类,和每一列对应一个二进制学习者。例如,第一个二进制学习者是类1和2,和第四个二进制学习者是类1和5,学习者认为类1作为正类。

输入ecocMdl.BinaryLearners显示每个二进制的模型类型的学习者。

ecocMdl.BinaryLearners
ans =10×1单元阵列{1 x1 classreg.learning.classif。x1 classreg.learning.classif.CompactClassificationSVM CompactClassificationSVM} {1}{1 x1 classreg.learning.classif。x1 classreg.learning.classif.CompactClassificationSVM CompactClassificationSVM} {1}{1 x1 classreg.learning.classif。x1 classreg.learning.classif.CompactClassificationSVM CompactClassificationSVM} {1}{1 x1 classreg.learning.classif。x1 classreg.learning.classif.CompactClassificationSVM CompactClassificationSVM} {1}{1 x1 classreg.learning.classif。x1 classreg.learning.classif.CompactClassificationSVM CompactClassificationSVM} {1}

输入ecocMdl.BinaryLoss显示二进制学习者损失函数。

ecocMdl.BinaryLoss
ans = '铰链'

分类一个新的观察,该模型计算positive-class分类为二进制学习者成绩,铰链函数适用于分数计算二进制损失,然后结合二进制损失到分类分数使用loss-weighted解码方案。

计算和显示标签、分类评分和positive-class分数的新观察使用预测函数。

(标签、分数pbscores) =预测(ecocMdl XTest (1:));标签
标签= 1
分数
成绩=1×50 -0.7281 -1.1774 -2.4186 -2.1109
pbscores”
ans =10×14.8247 2.6695 2.4870 1.9088 4.7496 7.5894 9.4470 3.8461 2.5316 -1.4261

ClassificationECOC预测块可以返回每个观察的三个输出传递给。

创建模型模型金宝app

这个示例提供了仿真软件模型金宝appslexClassificationECOCPredictExample.slx,包括ClassificationECOC预测块。您可以打开仿真软件模型,或者创建一金宝app个新的模型如本节所述。

打开模型模型金宝appslexClassificationECOCPredictExample.slx

SimMdlName =“slexClassificationECOCPredictExample”;open_system (SimMdlName)

如果你打开仿真软件模型,软件运行金宝app的代码PreLoadFcn回调函数在装货前仿真软件模型。金宝app的PreLoadFcn回调函数的slexClassificationECOCPredictExample如果您的工作区包含包括代码检查ecocMdl变量的训练模式。如果工作空间不包含变量,PreLoadFcn加载示例数据,火车ECOC模型,并创建一个输入信号的仿真软件模型。金宝app查看回调函数设置上节建模选项卡上,单击模型设置并选择模型属性。然后,在回调选项卡中,选择PreLoadFcn回调函数的模型的回调窗格。

创建一个新的模型模型,打开金宝app空白模型模板和添加ClassificationECOC预测块。添加尺寸和外港块和连接他们ClassificationECOC预测块。

双击ClassificationECOC预测块打开参数对话框。指定选择训练的机器学习模型参数,ecocMdl,工作空间变量包含训练ECOC模型。单击刷新按钮。对话框选项用于火车ecocMdl训练有素的机器学习模型。选中该复选框添加对预测的输出端口类分数(否定平均二进制损失)添加第二个输出端口分数,并选择复选框添加输出端口positive-class分数的二进制学习者添加第三个输出端口pbscore。点击好吧

创建一个输入信号的形式结构阵列的仿真软件模型。金宝app结构数组必须包含这些字段:

  • 时间——的时间点观察输入模型。在这个例子中,期间包括整数从0到nt - 1,在那里nt在测试数据样本的数量。预测的方向必须对应于观测数据。所以,在这种情况下,时间必须是一个列向量。

  • 信号——一个结构数组包含字段的描述输入数据和,在那里是一个矩阵的预测数据,是预测变量的数量。

创建一个适当的结构数组测试人类活动的数据集。

(nt, p) = (XTest)大小;activityInput。时间= (0:(nTest-1))'; activityInput.signals(1).values = XTest; activityInput.signals(1).dimensions = p;

从工作区导入信号数据:

  • 打开配置参数对话框。在建模选项卡,设置部分中,点击模型设置

  • 数据导入/导出窗格中,选择输入复选框并输入activityInput在相邻的文本框。

  • 解算器窗格中,在仿真时间,设置停止时间activityInput.time(结束)。下解算器的选择,设置类型固定步,并设置解算器离散(没有连续状态)。下解算器的细节,设置固定的大小为1。这些设置使模型运行每个样本的仿真activityInput

更多细节,请参阅负载为模拟信号数据(金宝app模型)

模拟模型。

sim (SimMdlName);

当尺寸块检测到一个观察,它指导观察到ClassificationECOC预测块中。您可以使用仿真数据检查(金宝app模型)外港的查看记录的数据块。

另请参阅

||||||

相关的话题