使用MATLAB函数块预测类标签

该示例示出了如何将MATLAB函数块添加到一的Simulink用于标签预测。金宝appMATLAB函数块接受流数据,并预测使用已训练的,支持向量机(SVM)分类模型的标签和分类评分。金宝app有关使用MATLAB功能块的详细信息,请参阅使用MATLAB函数块创建自定义功能(金宝app模型)。

电离层数据集,其中包括在统计和机器学习工具箱™,包含雷达收益质量(ÿ)及预测数据(X)。雷达回波要么质量很好(‘g’)或品质欠佳('B')。

加载电离层数据集。确定样本大小。

加载电离层N = numel(Y)
n = 351

MATLAB函数块不能返回电池阵列。所以,响应变量转换成其元素是一个逻辑矢量1如果雷达返回良好,并且0除此以外。

Y = strcmp (Y,‘g’);

假设雷达返回是按顺序检测到的,并且您有前300个观察结果,但是您还没有接收到最后的51个。将数据划分为当前和未来的示例。

prsntX = X(施用:);prsntY = Y(施用);ftrX = X(301年:,);ftrY = Y(301:结束);

利用现有的所有数据训练支持向量机模型。指定预测数据标准化。

Mdl = fitcsvm (prsntX prsntY,“标准化”,真正);

MdlClassificationSVM模型。在命令行,你可以使用Mdl为新的观测做出预测。但是,您不能使用Mdl作为用于代码生成的函数中的输入参数。

准备Mdl在函数中使用saveLearnerForCoder

saveLearnerForCoder (Mdl'SVMIonosphere');

saveLearnerForCoder契约Mdl,然后将其保存在MAT文件SVMIonosphere.mat

定义一个名为的入口点函数svmIonospherePredict.m可以预测一个雷达回波是否是质量好。该函数应该:

  • 包括代码生成指令%#代码生成在函数的某个地方。

  • 接受雷达返回的预报数据。数据必须是相称的X除了行数。

  • 负载SVMIonosphere.mat运用loadLearnerForCoder

  • 用于预测雷达返回质量为良好的返回预测标签和分类分数(即正类分数)。

函数(标签,分数)= svmIonospherePredict (X)%#代码生成%svmIonospherePredict使用SVM模型预测雷达收益质量%svmIonospherePredict预测标签和分类测算雷达在预报数据X的数值矩阵中返回的百分比分数%使用压缩SVM模型中的文件SVMIonosphere.mat。行(X)%对应于观察和列预测变量。标签%是预测的标签和得分的置信度雷达回波质量分级为良好。%版权所有2016年MathWorks公司MDL = loadLearnerForCoder('SVMIonosphere');[标号,bothscores] =预测(MDL,X);得分= bothscores(:,2);结束

注意:如果您单击本页右上方的按钮,并在MATLAB®中打开这个示例,那么MATLAB将打开示例文件夹。该文件夹包含入口点函数文件。

加载的Simuli金宝appnk模型slexSVMIonospherePredictExample.slx

SimMdlName ='slexSVMIonospherePredictExample';open_system(SimMdlName);

该图显示的Simulink模型。金宝app当输入节点检测到雷达回波,它指示将观测到MATLAB功能块调度到svmIonospherePredict.m。在预测标签和得分之后,模型将这些值返回到工作区,并一次显示一个模型中的值。当你负荷slexSVMIonospherePredictExample.slx,MATLAB®还加载数据集,它需要一个名为radarReturnInput。然而,这个例子说明了如何构建所需的数据集。

该模型期望接收输入数据作为称为结构阵列radarReturnInput包含这些字段:

  • 时间- 在时间点处的观察进入模型。在该示例中,该持续时间包括从0虽然50.取向必须对应于所述预测数据的观测整数。所以,在这个例子中,时间必须是一个列向量。

  • 信号- A 1×1结构阵列描述输入数据,以及含有该领域是预测数据的矩阵。为预测变量个数。

创建用于将来的雷达回波适当的结构阵列。

radarReturnInput.time =(0:50)';radarReturnInput.signals(1).values = ftrX;radarReturnInput.signals(1).dimensions =尺寸(ftrX,2);

你可以改变从名字radarReturnInput,然后在模型中指定新名称。但是,Simuli金宝appnk®希望结构数组包含所描述的字段名。

使用模拟训练举起手中的数据模型,即,在数据radarReturnInput

sim (SimMdlName);

图中显示了模型处理完所有的观察后的情况radarReturnInput一次一个。预测的标签X(351年:)1和其正级得分1.431。的变量兜售YOUT,svmlogsout显示在工作区。YOUTsvmlogsout金宝appSimulinkData.Dataset包含预测的标签和对象的得分。有关详细信息,请参阅日志模拟数据的数据格式(金宝app模型)。

摘自模拟日志的模拟数据。

labelsSL = svmlogsout.getElement(1).Values.Data;scoresSL = svmlogsout.getElement(2).Values.Data;

labelsSL是预测标签的51×1数值向量。labelsSL (j)=1意味着该SVM模型预测,雷达回波Ĵ未来样品中具有良好的质量和0否则表示。scoresSL为正类成绩的51乘1的数字向量,即到决策边界的有符号距离。阳性分数对应于预测的标签1和负的分数对应于预测的标签0

预测使用标签和正级分数在命令行预测

[labelCMD,scoresCMD] =预测(MDL,ftrX);scoresCMD = scoresCMD(:,2);

labelCMDscoresCMD是相称labelsSLscoresSL

通过比较返回的未来样品,阳性级分slexSVMIonospherePredictExample这些返回调用预测在命令行。

ERR =总和((scoresCMD  -  scoresSL)^ 2);ERR 
              
ans = logical 1

该套分数之间的偏差平方和的总和是可以忽略不计。

如果您还拥有Simulink®Code金宝appr™许可证,那么您可以从其中生成C代码slexSVMIonospherePredictExample.slx在Si金宝appmulink®或从命令行使用rtwbuild。有关详细信息,请参阅为模型生成C代码(金宝app编码器的Simulink)。

也可以看看

||||

相关的话题