预测类标签使用ClassificationECOC预测块
这个例子展示了如何使用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分类模型通过训练数据XTrain
和YTrain
到fitcecoc
函数。
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模型)外港的查看记录的数据块。
另请参阅
ClassificationECOC预测|ClassificationEnsemble预测|ClassificationSVM预测|ClassificationLinear预测|ClassificationECOC
|预测
|fitcecoc