创建机器学习模型的编码器配置者
训练机器学习模型后,创建一个编码器配置者通过使用模型learnerCoderConfigurer
。使用对象的功能和属性的配置器的指定代码生成选项,并产生C / C ++的代码预测
和更新
机器学习模型的功能。生成C / C ++代码需要MATLAB®编码器™。
此流程图显示了使用编码器配置程序的代码生成工作流。使用learnerCoderConfigurer
突出显示的步骤。
训练一个机器学习模型,然后生成代码预测
和更新
通过使用编码器配置器实现模型的功能。
加载carsmall
数据集和训练一个支持向量机(SVM)回归模金宝app型。
加载carsmallX = [马力,重量];Y = MPG;MDL = fitrsvm(X,Y);
MDL
是RegressionSVM
宾语。
属性创建一个编码器配置程序RegressionSVM
通过使用模型learnerCoderConfigurer
。指定预测数据X
。该learnerCoderConfigurer
功能使用输入X
配置的编码器属性预测
函数的输入。
配置器= learnerCoderConfigurer(MDL,X)
配置属性= RegressionSVMCoderConfigurer:更新输入:α:[1 x1 LearnerCoderInput] SupportVectors: [1 x1 LearnerCoderInpu金宝appt]: [1 x1 LearnerCoderInput]偏见:[1 x1 LearnerCoderInput]预测输入:X: [1 x1 LearnerCoderInput]代码生成参数:NumOutputs: 1 OutputFileName:“RegressionSVMModel”属性,方法
配置
是RegressionSVMCoderConfigurer
对象,它是一个编码器配置器一RegressionSVM
宾语。
生成C / C ++代码,你必须能够访问到被正确配置C / C ++编译器。MATLAB编码器定位和使用的支持,安装编译器。金宝app您可以使用MEX
-设定
要查看和更改默认的编译器。有关详细信息,请参阅更改默认的编译器(MATLAB)。
生成的代码预测
和更新
该SVM回归模型的函数(MDL
)使用默认设置。
generateCode(配置者)
generateCode在“初始化”输出文件夹中创建这些文件。米”、“预测。米”、“更新。米”、“RegressionSVMModel.mat”
该generateCode
函数完成这些操作:
生成生成代码所需的MATLAB文件,包括两个入口点函数predict.m
和update.m
为预测
和更新
的功能MDL
, 分别。
创建一个名为的MEX函数RegressionSVMModel
两个入口点函数。
在该MEX函数创建代码代码生成\ MEX \ RegressionSVMModel
夹。
该MEX功能复制到当前文件夹。
显示的内容predict.m
,update.m
和initialize.m
通过使用文件类型
功能。
类型predict.m
功能varargout =预测(X,varargin)%#代码生成自动生成的%通过MATLAB,29-FEB-2020 2点23分46秒[varargout {1:nargout}] =初始化( '预测',X,varargin {:});结束
类型update.m
功能更新(varargin)%#代码生成自动生成的%通过MATLAB,29-FEB-2020 2时23分46秒初始化( '更新',varargin {:});结束
类型initialize.m
函数[varargout] =初始化(命令,varargin)%#代码生成自动生成的%通过MATLAB,29-FEB-2020二点23分46秒coder.inline( '总是')持久性模型如果的isEmpty(模型)模型= loadLearnerForCoder('RegressionSVMModel。垫');端开关(命令)情况下, '更新' %更新结构域:阿尔法%SupportVectors%比例%偏差模型=更新(模型,varargin 金宝app{:});情况下 '地预测' %预测输入:X X = varargin {1};如果nargin == 2 [varargout {1:nargout}] =预测(模式,X);否则PVPairs =小区(1,nargin-2);对于i = 1:nargin-2 PVPairs {1,I} = {varargin i + 1的};端[varargout {1:nargout}] =预测(模式,X,PVPairs {:});结束结束结束
使用部分数据集训练支持向量机模型,并为该模型创建编码器配置器。使用编码器配置器的属性指定支持向量机模型参数的编码器属性。使用编码器配置程序的对象函数生成C代码,用于预测新的预测数据的标签。然后使用整个数据集对模型进行再培训,并在不重新生成代码的情况下更新生成的代码中的参数。
火车模型
加载电离层
数据集。该数据集具有34个预测和雷达回波351个二进制应答,要么坏('B'
)或良好(‘g’
)。使用前50个观察训练的二元SVM分类模型。
加载电离层Mdl = fitcsvm (X (1:50:), Y (1:50));
MDL
是ClassificationSVM
宾语。
创建编码器配置
属性创建一个编码器配置程序ClassificationSVM
通过使用模型learnerCoderConfigurer
。指定预测数据X
。该learnerCoderConfigurer
功能使用输入X
配置的编码器属性预测
函数的输入。另外,将输出数量设置为2,以便生成的代码返回预测的标签和分数。
配置器= learnerCoderConfigurer(MDL,X(1:50,:),'NumOutputs',2);
配置
是ClassificationSVMCoderConfigurer
对象,它是一个编码器配置器一ClassificationSVM
宾语。
指定参数的编码器属性
指定支持向量机分类模型参数的编码属性,以便您可以在重新训练模型后更新生成的代码中的参数。此示例指定要传递给生成的代码的预测器数据的编码器属性和支持向量机模型的支持向量的编码器属性。金宝app
首先,指定的编码器属性X
这样生成的代码接受任何数量的意见。修改SizeVector
和VariableDimensions
属性。该SizeVector
属性指定上限的预测数据大小,和VariableDimensions
属性指定的预测数据的每个维度是否具有可变大小或固定大小。
configurer.X.SizeVector = [34 Inf文件]。configurer.X.VariableDimensions = [TRUE FALSE];
第一尺寸的大小是观测值的数量。在这种情况下,该代码指定上限大小是正
大小是可变的X
可以有任意数量的意见。该规范是方便,如果生成的代码,当你不知道的观测次数。
第二维度的大小是预测变量的数目。此值必须固定机器学习模型。X
包含34个谓词,因此SizeVector
属性的值必须为34VariableDimensions
属性必须是假
。
如果您在使用新的数据或不同的设置,重新训练SVM模型,支持向量的数量可以改变。金宝app因此,指定的编码器属性金宝appSupportVectors
以便您可以更新生成的代码中的支持向量。金宝app
configurer.金宝appSupportVectors.SizeVector = [250 34];
修改了Alpha的SizeVector属性以满足配置约束。对supportvectorlabel的SizeV金宝appector属性进行了修改,以满足配置约束。
configurer.金宝appSupportVectors.VariableDimensions = [真假];
为阿尔法VariableDimensions属性已被修改,以满足配置约束。对于SupportVectorLabels VariableDim金宝appensions属性已被修改,以满足配置约束。
如果您修改的编码器属性金宝appSupportVectors
,然后软件修改编码器的属性α
和金宝appSupportVectorLabels
满足配置约束。如果一个参数的编码器的属性的修改需要对其他相关的参数的后续变化,以满足配置约束,那么软件改变从属参数的编码器的属性。
生成代码
生成C / C ++代码,你必须能够访问到被正确配置C / C ++编译器。MATLAB编码器定位和使用的支持,安装编译器。金宝app您可以使用MEX
-设定
要查看和更改默认的编译器。有关详细信息,请参阅更改默认的编译器(MATLAB)。
使用generateCode
以生成用于代码预测
和更新
该SVM分类模型的函数(MDL
)使用默认设置。
generateCode(配置者)
generateCode创建输出文件夹在这些文件中: 'initialize.m', 'predict.m', 'update.m', 'ClassificationSVMModel.mat'
generateCode
生成生成代码所需的MATLAB文件,包括两个入口点函数predict.m
和update.m
为预测
和更新
的功能MDL
, 分别。然后generateCode
创建一个名为MEX功能ClassificationSVMModel
在两个入口点函数代码生成\ MEX \ ClassificationSVMModel
文件夹,复制MEX函数到当前文件夹。
验证生成的代码
通过一些预测数据,以验证是否预测
功能MDL
和预测
函数中的函数返回相同的标签。要在具有多个入口点的MEX函数中调用入口点函数,请将函数名指定为第一个输入参数。
[标号,得分=预测(MDL,X);[label_mex,score_mex] = ClassificationSVMModel('预测',X);
比较标签
和label_mex
通过使用是平等的
。
label_mex isequal(标签)
ANS =合乎逻辑1
是平等的
返回逻辑1 (真正
)如果所有的输入是相等的。对比确认预测
功能MDL
和预测
函数中的函数返回相同的标签。
score_mex
可能包括四舍五入的差异得分
。在这种情况下,比较score_mex
和得分
,允许小的公差。
找到(abs (score-score_mex) > 1 e-8)
ANS =为0x1空双列向量
对比确认得分
和score_mex
在公差范围内相等1 e-8
。
在生成的代码中重新训练模型和更新参数
再培训使用整个数据集模型。
retrainedMdl = fitcsvm (X, Y);
通过使用提取的参数更新validatedUpdateInputs
。该函数检测在修改模型参数retrainedMdl
并验证是否修改的参数值满足参数的编码器的属性。
PARAMS = validatedUpdateInputs(配置者,retrainedMdl)
更新参数在生成的代码。
ClassificationSVMModel (“更新”,则params)
验证生成的代码
比较从输出预测
功能retrainedMdl
和预测
功能更新MEX功能。
[标号,得分=预测(retrainedMdl,X);[label_mex,score_mex] = ClassificationSVMModel('预测',X);label_mex isequal(标签)
ANS =合乎逻辑1
找到(abs (score-score_mex) > 1 e-8)
ANS =为0x1空双列向量
对比确认标签
和labels_mex
是相等的,而分数值在公差范围内相等。
MDL
-机器学习模型机器学习模型,指定为一个完整的或紧凑型对象,在此表支持的机型中给出。金宝app
模型 | 全/紧凑模型对象 | 培训功能 |
---|---|---|
多类分类的二叉决策树 | ClassificationTree ,CompactClassificationTree |
fitctree |
SVM一类和二元分类 | ClassificationSVM ,CompactClassificationSVM |
fitcsvm |
线性模型的二元分类 | ClassificationLinear |
fitclinear |
多类模型支持向量机和线性模型 | ClassificationECOC ,CompactClassificationECOC |
fitcecoc |
二进制决策树的回归 | RegressionTree ,CompactRegressionTree |
fitrtree |
金宝app支持向量机回归 | RegressionSVM ,CompactRegressionSVM |
fitrsvm |
线性回归 | RegressionLinear |
fitrlinear |
有关代码生成使用说明和机器学习模型的限制,请参阅模型对象页面的代码生成部分。
X
-预测数据为预测数据预测
功能MDL
,指定为ñ——- - - - - -p数字矩阵,其中ñ是观测值的数量和p是预测变量的数目。若要改为指定X
作为一个p——- - - - - -ñ矩阵,其中的意见对应的列,您必须设置“ObservationsIn”
名称 - 值对参数'列'
。此选项仅适用于具有线性二进制学习者的线性模型和ECOC模型。
该预测
机器学习模型的预测功能分类标签和响应回归给定的预测数据。创建编码器配置者后配置
,你可以用generateCode
函数来生成C / C ++的代码预测
功能MDL
。所生成的代码接受具有相同的大小和数据类型的数据的预测X
。您可以指定每个维度是否具有创建后可变大小或固定大小配置
。
例如,如果希望生成使用带有三个预测变量的100个观察值来预测标签的C/ c++代码,那么请指定X
如0 (100 3)
。该learnerCoderConfigurer
函数仅使用的大小和数据类型X
,而不是它的值。因此,X
可预测的数据或表示与特定的数据类型的设定值的MATLAB表达。输出配置
存储的大小和数据类型X
在X
财产配置
。您可以修改的大小和数据类型X
创建后配置
。例如,更改的观察到200的数目和数据类型来单
。
configurer.X。SizeVector= [200 3]; configurer.X.DataType =“单一”;
以允许生成的C / C ++码接受高达100个观测数据的预测,指定X
如0 (100 3)
并改变VariableDimensions
属性。
configurer.X.VariableDimensions = [1 0];
[1 0]
表示的第一维X
(观测值数目)具有可变尺寸和第二尺寸X
(预测变量的数目)具有一个固定的大小。指定的若干意见,在该示例100中,成为在所生成的C / C ++代码观察的最大允许数目。要允许任何若干意见,指定绑定为正
。configurer.X。SizeVector= [Inf 3];
数据类型:单
|双
指定可选的用逗号分隔的对名称,值
参数。名称
是参数的名称和值
是对应的值。名称
必须出现引号内。您可以按照任何顺序指定多个名称和值对参数Name1, Value1,…,的家
。
配置= learnerCoderConfigurer (Mdl X,“NumOutputs”2“OutputFileName”,“myModel”)
设置的输出在数预测
2并指定文件名“myModel”
对于所生成的C / C ++代码。
'NumOutputs'
-输出在数预测
在输出参数号码预测
机器学习模型的功能MDL
,指定为逗号分隔的一对组成的'NumOutputs'
一个正整数ñ
。
的输出预测
不同型号的功能。预测
在所生成的C / C ++代码返回第一ñ
的输出预测
按“输出”列中给出的顺序运行。
模型 | 预测 模型的功能 |
输出 |
---|---|---|
多类分类的二叉决策树 | 预测 |
标签 (预测类标签),得分 (后验概率),节点 (对于预测的类节点号码),CNUM (预测标签类数) |
SVM一类和二元分类 | 预测 |
标签 (预测类标签),得分 (分数或后验概率) |
线性模型的二元分类 | 预测 |
标签 (预测类标签),得分了 (分类分值) |
多类模型支持向量机和线性模型 | 预测 |
标签 (预测类标签),NegLoss (负平均值二进制的损失),PBScore (阳性级分) |
二进制决策树的回归 | 预测 |
Yfit (预测反应),节点 (对于预测节点编号) |
支持向量机回归 | 预测 |
yfit (预测反应) |
线性回归 | 预测 |
YHat (预测反应) |
例如,如果您指定“NumOutputs”, 1
对于SVM分类模型,然后预测
返回预测在所生成的C / C ++代码类别标签。
创建编码器配置者后配置
,您可以通过使用点符号修改的输出的数量。
configurer.NumOutputs = 2;
该'NumOutputs'
名称 - 值对参数是等效于'-nargout'
的编译器选项代码生成
。此选项指定的输出参数在生成代码的入口点函数的数量。目标函数generateCode
编码器的一个配置程序生成两个入口点函数predict.m
和update.m
为预测
和更新
的功能MDL
分别-并产生C / C ++用于两个入口点函数的代码。对于指定的值'NumOutputs'
对应于输出参数的数量predict.m
。
例子:“NumOutputs”, 2
数据类型:单
|双
'OutputFileName'
-的生成的C / C ++代码文件名MDL
对象名称加'模型'
(默认)|特征向量|串标生成的C/ c++代码的文件名,指定为逗号分隔的对组成'OutputFileName'
和字符向量或标量的字符串。
目标函数generateCode
编码器配置器的产生使用该文件名C / C ++代码。
文件名不能包含空格,因为它们会导致某些操作系统配置代码生成失败。此外,名称必须是一个有效的MATLAB函数名。
默认的文件名是对象名称MDL
其次是'模型'
。例如,如果MDL
是CompactClassificationSVM
要么ClassificationSVM
对象,则默认名称为“ClassificationSVMModel”
。
创建编码器配置者后配置
,您可以使用点符号修改文件名。
configurer.OutputFileName =“myModel”;
例子:'OutputFileName', '基于myModel'
数据类型:字符
|串
“详细”
-详细级别真正
(逻辑1)(默认)|假
(逻辑0)详细级别,指定为逗号分隔的对组成“详细”
,要么真正
(逻辑1),或假
(逻辑0)。详细级别控制通知消息中的对编码器配置器命令行的显示配置
。
值 | 描述 |
---|---|
真正 (逻辑1) |
软件显示通知消息当你在其他相关参数的变化而变化的参数结果的编码属性。 |
假 (逻辑0) |
该软件不显示通知消息。 |
为了能够在生成的代码更新机器学习模型参数,您需要配置生成代码之前的参数编码器的属性。的参数编码器的属性是依赖于彼此,所以软件存储依赖关系配置约束。如果通过使用一个编码器配置器修改的参数的编码器的属性,并修改需要对其他相关的参数的后续变化,以满足配置约束,那么软件改变从属参数的编码器的属性。详细级别,判断是否对于这些随后的变化软件显示的通知消息。
创建编码器配置者后配置
,可以使用点表示法修改详细级别。
configurer.Verbose = FALSE;
例子:“放牧”,假
数据类型:合乎逻辑
“ObservationsIn”
-预测数据的观察维度“行”
(默认)|'列'
预测数据观测尺寸,指定为逗号分隔的一对组成的“ObservationsIn”
,要么“行”
要么'列'
。如果你设置“ObservationsIn”
至'列'
,然后是预测数据X
必须如此定向使得观测对应列。
该'列'
选项只对线性模型和ECOC模型与线性二进制学习者使用。
例子:'ObservationsIn', '列'
配置
- 编码器配置者机器学习模型的编码器配置程序,作为此表中的编码器配置程序对象之一返回。
模型 | 编码器配置者对象 |
---|---|
多类分类的二叉决策树 | ClassificationTreeCoderConfigurer |
SVM一类和二元分类 | ClassificationSVMCoderConfigurer |
线性模型的二元分类 | ClassificationLinearCoderConfigurer |
多类模型支持向量机和线性模型 | ClassificationECOCCoderConfigurer |
二进制决策树的回归 | RegressionTreeCoderConfigurer |
金宝app支持向量机回归 | RegressionSVMCoderConfigurer |
线性回归 | RegressionLinearCoderConfigurer |
使用编码器配置器对象的对象的功能和属性来配置代码生成选项,并产生用于C / C ++代码预测
和更新
机器学习模型的功能。
Existe UNA版本修订于德埃斯特ejemplo EN苏SISTEMA。¿Prefiere abrir ESTA版本?
您单击对应于该MATLAB命令的链接:
通过在MATLAB命令窗口中输入该命令来运行它。Web浏览器不支持MATLAB命令。金宝app
您还可以选择从下面的列表中的网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。