主要内容

基于命令行的机器学习模型预测代码生成

此示例演示如何在命令行生成用于预测分类和回归模型对象的代码。您还可以使用MATLAB®编码器生成代码™ 应用程序。看见使用MATLAB Coder App生成机器学习模型预测代码详情请参阅。

某些分类和回归模型对象具有预测随机的支持代码生成的函数。使用这些金宝app对象函数进行预测需要经过训练的分类或回归模型对象,但-args选择编码基因(MATLAB编码器)不接受这些对象。请使用saveLearnerForCoderloadLearnerForCoder如本例所述。

此流程图显示分类和回归模型对象的对象函数的代码生成工作流。

训练模型后,使用保存训练过的模型saveLearnerForCoder.定义一个入口点函数,通过使用loadLearnerForCoder并调用对象函数。然后使用编码基因,并验证生成的代码。

列车分类模型

培训配备代码生成功能的分类模型对象预测在这种情况下,训练一个支持向量机(SVM)分类模型。金宝app

负载鱼腥草inds=~strcmp(物种,“塞托萨”); X=meas(inds,3:4);Y=物种(IND);Mdl=fitcsvm(X,Y);

例如,该步骤可以包括数据预处理、特征选择和使用交叉验证优化模型。

使用保存模型saveLearnerForCoder

将分类模型保存到文件中SVMModel.mat利用saveLearnerForCoder.

saveLearnerForCoder(Mdl,“SVMModel”);

saveLearnerForCoder将分类模型保存到MATLAB二进制文件中SVMModel.mat作为当前文件夹中的结构数组。

定义入口点函数

入口点函数,也称为顶级主要的,重要的函数,是为生成代码而定义的函数。因为您不能使用编码基因,必须定义调用启用代码生成功能的入口点函数,并使用为入口点函数生成C/C++代码编码基因. 入口点函数中的所有函数都必须支持代码生成。金宝app

定义一个入口点函数,该函数返回输入预测数据的预测标签。在该函数中,使用loadLearnerForCoder,然后将加载的模型传递给预测。在这种情况下,请定义预测标签支持向量机函数,该函数使用SVM模型预测标签Mdl.

类型预测标签SVM.m%显示predictLabelsSVM.m文件的内容
函数label=predictLabelsSVM(x)%#codegen%predictLabelsSVM使用经过训练的SVM模型标注新观测值Mdl%predictLabelsSVM使用%保存的SVM模型Mdl和预测器数据x预测标签向量。Mdl=loadLearnerForCoder('SVMModel');label=predict(Mdl,x);结束

添加%#编码基因编译器指令(或pragma)指向函数签名后的入口点函数,以指示您打算为MATLAB算法生成代码。添加此指令将指示MATLAB代码分析器帮助您诊断和修复在代码生成过程中可能导致错误的冲突。请参阅使用代码分析器检查代码(MATLAB编码器).

注:如果单击此页面右上角的按钮并在MATLAB®中打开此示例,则MATLAB®将打开示例文件夹。此文件夹包含入口点函数文件。

生成代码

设置编译器

要生成C/C++代码,您必须能够访问正确配置的C/C++编译器。MATLAB Coder查找并使用受支持的已安装编译器。您可以使用金宝app墨西哥-设置查看和更改默认编译器。有关详细信息,请参阅更改默认编译器.

使用生成代码编码基因

使用为入口点函数生成代码编码基因(MATLAB编码器)因为C和C++是静态类型的语言,所以必须在编译时确定入口点函数中所有变量的属性。编码基因通过使用-args选项

在这种情况下,通过X作为-args选项指定生成的代码必须接受与训练数据具有相同数据类型和数组大小的输入X.

编码基因预测标签支持向量机-args{X}
代码生成成功。

如果编译时观察值的数量未知,还可以使用编码员(MATLAB编码器)。有关详情,请参阅指定用于代码生成的可变大小参数指定入口点函数输入的属性(MATLAB编码器)

构建类型

MATLAB编码器可以为以下构建类型生成代码:

  • MEX(MATLAB可执行文件)函数

  • 独立C/C++代码

  • 编译到静态库的独立C/C++代码

  • 编译到动态链接库的独立C/C++代码

  • 编译为可执行文件的独立C/C++代码

可以使用-配置选择编码基因(MATLAB编码器)。有关设置代码生成选项的详细信息,请参阅-配置选择编码基因(MATLAB编码器)配置生成设置(MATLAB编码器).

默认情况下,编码基因生成MEX函数。MEX函数是可从MATLAB执行的C/C++程序。您可以使用MEX函数加速MATLAB算法,并测试生成的代码的功能和运行时问题。有关详细信息,请参阅MATLAB算法加速(MATLAB编码器)为什么要在MATLAB中测试MEX函数?(MATLAB编码器).

代码生成报告

你可以使用-报告标记以生成代码生成报告。此报表帮助您调试代码生成问题并查看生成的C/C++代码。有关详细信息,请参阅代码生成报告(MATLAB编码器).

验证生成的代码

测试MEX函数,以验证生成的代码是否提供与原始MATLAB代码相同的功能。若要执行此测试,请使用与运行原始MATLAB代码相同的输入运行MEX函数,然后比较结果。在生成独立代码之前在MATLAB中运行MEX函数还可让您确定ect和修复在生成的独立代码中更难诊断的运行时错误。有关更多详细信息,请参阅为什么要在MATLAB中测试MEX函数?(MATLAB编码器).

传递一些预测数据以验证预测,预测标签支持向量机,并且MEX函数返回相同的标签。

标签1=预测(Mdl,X);labels2=预测LabelsSVM(X);labels3=预测LabelsSVM_mex(X);

使用以下命令比较预测的标签:等质量.

verifyMEX=isequal(标签1、标签2、标签3)
verifyMEX=必然的1.

等质量返回逻辑1(符合事实的),这意味着所有输入都相等。比较结果证实预测作用预测标签支持向量机函数和MEX函数返回相同的标签。

另见

(MATLAB编码器)|||

相关话题