主要内容

预测类标签使用MATLAB函数块

这个例子展示了如何添加一个仿真软件MATLAB®功能块®标签模型预测。金宝appMATLAB函数块接受流数据,预测使用标签和分类训练,支持向量机(SVM)分类模型。金宝app使用MATLAB函数块的详细信息,请参见实现MATLAB函数与MATLAB仿真软件的功能模块金宝app(金宝app模型)

训练分类模型

下面的例子使用了电离层数据集,其中包含雷达回波特性(Y)和预测数据(X)。雷达返回要么是质量好(‘g’)或糟糕的质量(“b”)。

加载电离层数据集,确定样本容量。

负载电离层n =元素个数(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,“标准化”,真正的);

Mdl是一个ClassificationSVM对象,它是一个线性支持向量机模型。线性支持向量机模型的预测系数提供足够的信息来预测新观察标签。把支持向量减少内存使用生成金宝app的代码。把支持向量通过线性支持金宝app向量机模型discard金宝appSupportVectors函数。

Mdl = discard金宝appSupportVectors (Mdl);

保存模型使用saveLearnerForCoder

在命令行上,您可以使用Mdl为新的观察结果做出预测。然而,您不能使用Mdl作为一个函数输入参数用于代码生成。

准备Mdl加载函数内使用saveLearnerForCoder

saveLearnerForCoder (Mdl“SVMIonosphere”);

saveLearnerForCoder契约MdlMAT-file,然后保存它SVMIonosphere.mat

定义MATLAB函数

定义一个MATLAB函数命名svmIonospherePredict.m,预计雷达回波是否质量好。函数必须:

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

  • 接受雷达回波的预测数据。数据必须相称X除了的行数。

  • 负载SVMIonosphere.mat使用loadLearnerForCoder

  • 返回标签和分类预测分数预测雷达回波的质量一样好(即positive-class分数)。

函数(标签,分数)= svmIonospherePredict (X)% # codegen% svmIonospherePredict预测雷达回波质量使用支持向量机模型% svmIonospherePredict预测估计标签和分类%的雷达返回数值矩阵的预测数据X%在文件SVMIonosphere.mat使用紧凑的SVM模型。行(X)%列对应于观察和预测变量。标签%是预测标签和分数是衡量信心%分类雷达回波质量一样好。%% 2016年版权MathWorks公司。Mdl = loadLearnerForCoder (“SVMIonosphere”);[标签,bothscores] =预测(Mdl X);分数= bothscores (:, 2);结束

注意:如果您单击按钮位于这个页面的右上角部分,在MATLAB中打开这个例子,然后用MATLAB打开示例文件夹。这个文件夹包含的入口点函数文件。

创建模型模型金宝app

创建一个仿真软件模金宝app型的MATLAB分派功能块svmIonospherePredict.m

这个示例提供了仿真软件模型金宝appslexSVMIonospherePredictExample.slx。打开仿真软件模型。金宝app

SimMdlName =“slexSVMIonospherePredictExample”;open_system (SimMdlName)

classifyIonosphereBeforeSim.png

图显示了仿真软件模型。金宝app当输入节点检测到一个雷达回波,它指导观察到MATLAB分派功能块svmIonospherePredict.m。模型预测的标签和得分后,将这些值返回给工作区并显示值模型中的一个。当你负荷slexSVMIonospherePredictExample.slx,MATLAB还加载数据集,它需要调用radarReturnInput。然而,这个例子展示了如何构建所需的数据集。

期望获得输入数据模型作为一个结构数组radarReturnInput包含这些字段:

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

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

创建一个适当的结构阵列为未来雷达的回报。

radarReturnInput。时间= (0:50)';radarReturnInput.signals (1)。值= ftrX;radarReturnInput.signals (1)。尺寸大小= (ftrX 2);

你可以改变这个名字radarReturnInput,然后在模型中指定的新名称。然而,模型预计结构金宝app数组包含描述字段名称。

使用数据模拟模型的训练,即数据radarReturnInput

sim (SimMdlName);

classifyIonosphereAfterSim.png

图显示了模型后,处理所有的观察radarReturnInput一次一个。预测的标签的X(351年:)1及其positive-class得分1.431。的变量吹捧,,svmlogsout出现在工作区中。svmlogsout金宝appSimulinkData.Dataset对象包含预测的标签和分数。更多细节,请参阅数据格式记录仿真数据(金宝app模型)

提取仿真模拟的数据日志。

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

labelsSL是一个51-by-1数值向量的预测标签。labelsSL (j)=1意味着支持向量机模型预测,雷达回波j未来的样品质量好,0否则意味着。scoresSL51-by-1数值向量positive-class分数,也就是说,签署了边界距离决定。积极预测分数对应的标签1预测,负分数对应的标签0

预测标签和positive-class分数在命令行中使用预测

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

labelCMDscoresCMD是相称labelsSLscoresSL

比较future-sample, positive-class分数返回的slexSVMIonospherePredictExample通过调用返回预测在命令行中。

呃=总和((scoresCMD - scoresSL) ^ 2);犯错< eps
ans =逻辑1

集之间的偏差的平方和成绩是微不足道的。

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

另请参阅

|||(金宝app模型)|

相关的话题