主要内容

使用Stateflow预测类标签

这个例子展示了如何使用一个Stateflow®图表标签预测。火车费雪的判别分析模型的例子虹膜数据集使用fitcdiscr,定义了一个函数的代码生成加载训练模型和预测新数据标签。Stateflow图在本例接受流数据和预测标签使用函数定义。

费雪的虹膜数据集,包括在统计和机器学习工具箱™,包含物种(物种)和测量(花萼长度,萼片宽,花瓣长度和花瓣宽度150虹膜样本。数据集包含50个标本每个三个物种:setosa,杂色的,virginica。

加载费舍尔虹膜数据集。

负载fisheriris

转换物种索引向量中1、2和3对应setosa杂色的,和virginica分别。

物种= grp2idx(物种);

分区数据为训练集和测试集。

rng (“默认”)%的再现性idx1 = randperm (150、75)”;idx2 = setdiff ((1:15)”, idx1);X =量(idx1,:);Y =物种(idx1,:);trainX =量(idx2:);trainY =物种(idx2:);

使用trainXtrainY训练一个模型,和使用XY测试训练模型。

列车二次判别分析模型。

Mdl = fitcdiscr (trainX trainY,“DiscrimType”,“二次”);

Mdl是一个ClassificationDiscriminant模型。在命令行上,您可以使用Mdl为新的观察结果做出预测。然而,您不能使用Mdl作为一个输入参数的函数代码生成。准备Mdl在函数通过使用加载saveLearnerForCoder

saveLearnerForCoder (Mdl“DiscrIris”);

saveLearnerForCoder契约Mdl并将它保存在MAT-fileDiscrIris.mat

显示预测物种的展示盒Stateflow模型,定义一个枚举类通过使用classdef在MATLAB®文件IrisSpecies.m

classdefIrisSpecies < 金宝appSimulink.IntEnumType枚举Setosa(1)多色的(2)Virginica (3)结束结束

枚举数据的详细信息,请参阅定义枚举数据类型(Stateflow)

定义一个函数的名字mypredict.m预测虹膜物种从新的测量数据通过使用训练模型。这个函数应该:

  • 包括代码生成指令% # codegen在这个函数。

  • 接受虹膜测量数据。数据必须符合X除了的行数。

  • 负载DiscrIris.mat使用loadLearnerForCoder

  • 回归预测虹膜的物种。

函数标签= mypredict (X)% # codegen% MYPREDICT预测物种的虹膜花使用判别模型% mypredict预测物种使用紧凑的虹膜的花% DiscrIris.mat判别模型文件。行X的对应%的观察和列对应预测变量。标签是%预测物种。mdl = loadLearnerForCoder (“DiscrIris”);labelTemp =预测(mdl X);标签= IrisSpecies (labelTemp);结束

打开模型®模型金宝appsf_countflowers.slx

sfName =“sf_countflowers”;open_system (sfName);

sf_countflowers_sim_open_system.png

数据显示仿真软件模型和流图中包含的Statefl金宝appow图表。当输入节点检测测量数据时,它将数据图表。然后图表预测一种虹膜花和计数鲜花为每个物种的数量。图返回预测物种工作区并显示模型内的物种,一次一个。数据存储内存块NumFlowers商店花送给每个物种的数量。

期望获得输入数据的图表作为一个结构数组fisheririsInput包含这些字段:

  • 时间——的时间点观察输入模型。在这个例子中,期间包括从0到74的整数。的方向时间必须对应于观测的预测数据。所以,对于这个示例,时间必须是一个列向量。

  • 信号- 1×1结构阵列描述输入数据和包含字段。的字段是一个矩阵的预测数据。的字段的数量预测变量。

创建一个适当的结构数组虹膜花测量。

fisheririsInput。时间= (0:74)';fisheririsInput.signals。尺寸= 4;fisheririsInput.signals。值= X;

你可以改变这个名字fisheririsInput,然后在模型中指定的新名称。然而,Stateflow预计结构数组包含描述字段名称。更多细节,请参阅加载数据结构根级输入(金宝app模型)

模拟模型。

sim (sfName)

sf_countflowers_sim.png

图显示了模型后,处理所有的观察fisheririsInput,每次一个。的预测物种X(75年:)virginica。setosa数量的,杂色的,virginicaX分别是22、22日和31日。

的变量logsout出现在工作区中。logsout是一个金宝appSimulinkData.Dataset对象包含预测物种。提取仿真预测物种数据日志。

labelSF = logsout.getElement (1) .Values.Data;

预测物种在命令行中使用预测

labelCMD =预测(Mdl X);

返回的预测物种进行比较sf_countflowers通过调用返回预测在命令行中。

isequal (labelCMD labelSF)
ans =逻辑1

isequal返回逻辑1 (真正的如果所有的输入都是平等的。这种比较证实,sf_countflowers返回预期的结果。

如果你也有一个仿真软件编码器™许可证,金宝app然后你可以从生成C代码sf_countflowers.slx在仿真金宝app软件或从命令行rtwbuild(金宝app仿真软件编码器)。更多细节,请参阅为一个模型生成C代码(金宝app仿真软件编码器)

另请参阅

|||(金宝app模型)

相关的话题