更新
描述
生成C/ c++代码预测
和更新
通过使用编码器配置对象实现机器学习模型的功能。创建该对象learnerCoderConfigurer
以及它的目标函数generateCode
。然后你可以使用更新
函数来更新生成代码中的模型参数,而不必重新生成代码。当您使用新数据或设置重新训练模型时,此特性减少了重新生成、重新部署和验证C/ c++代码所需的工作量。
此流程图显示了使用编码器配置器的代码生成工作流。使用更新
对于突出显示的步骤。
如果不生成代码,则不需要使用更新
函数。当你在MATLAB中重新训练一个模型时®,返回的模型已经包含修改后的参数。
的更新版本updatedMdl
=更新(Mdl
,参数个数
)Mdl
中包含新参数参数个数
。
重新训练模型后,使用validatedUpdateInputs
函数,用于检测再训练模型中修改的参数,并验证修改后的参数值是否满足参数的编码器属性。的输出validatedUpdateInputs
即已验证的参数作为输入参数个数
更新模型参数。
例子
生成代码中SVM分类模型参数的更新
使用部分数据集训练SVM模型,并为该模型创建编码器配置器。使用编码器配置器的属性来指定SVM模型参数的编码器属性。使用编码器配置器的对象函数来生成预测新预测器数据标签的C代码。然后使用整个数据集重新训练模型,并在不重新生成代码的情况下更新生成代码中的参数。
火车模型
加载电离层
数据集。该数据集有34个预测因子和351个雷达回波的二进制响应,要么是坏的(“b”
)或好(‘g’
).
负载电离层
使用前50个观测值和具有自动核尺度的高斯核函数训练二值支持向量机分类模型。
Mdl = fitcsvm(X(1:50,:),Y(1:50),…“KernelFunction”,“高斯”,“KernelScale”,“汽车”);
Mdl
是一个ClassificationSVM
对象。
创建编码器配置器
的编码器配置器ClassificationSVM
通过使用learnerCoderConfigurer
。指定预测器数据X
。的learnerCoderConfigurer
函数使用输入X
的编码器属性预测
函数的输入。另外,将输出的数量设置为2,以便生成的代码返回预测的标签和分数。
configurer = learnerCoderConfigurer(Mdl,X(1:50,:),“NumOutputs”2);
配置
是一个ClassificationSVMCoderConfigurer
对象的编码器配置器ClassificationSVM
对象。
指定参数的编码器属性
指定SVM分类模型参数的编码器属性,以便您可以在重新训练模型后更新生成代码中的参数。此示例指定您希望传递给生成代码的预测器数据的编码器属性,以及SVM模型的支持向量的编码器属性。金宝app
的编码器属性X
以便生成的代码接受任意数量的观察值。修改SizeVector
和VariableDimensions
属性。的SizeVector
属性指定预测器数据大小的上限,而VariableDimensions
属性指定预测器数据的每个维度是可变大小还是固定大小。
configuration . x . sizevector = [Inf 34];configuration . x . variabledimensions = [true false];
第一个维度的大小是观测值的数量。在本例中,代码指定大小的上界为正
大小是可变的,也就是说X
可以有任意数量的观察值。如果在生成代码时不知道观察值的数量,则此规范非常方便。
第二个维度的大小是预测变量的数量。对于机器学习模型,这个值必须是固定的。X
包含34个预测器,所以SizeVector
属性必须为34,且VariableDimensions
属性必须为假
。
如果使用新数据或不同的设置重新训练SVM模型,支持向量的数量可能会有所不同。金宝app的编码器属性金宝appSupportVectors
这样您就可以更新生成代码中的支持向量。金宝app
configurati金宝appon . supportvectors . sizevector = [250 34];
Alpha的SizeVector属性已被修改以满足配置约束。SupportVectorLabels的SizeV金宝appector属性已被修改以满足配置约束。
configurati金宝appon . supportvectors . variabledimensions =[真假];
Alpha的VariableDimensions属性已被修改以满足配置约束。SupportVectorLabels的VariableDimen金宝appsions属性已被修改以满足配置约束。
的编码器属性金宝appSupportVectors
,然后软件修改编码器属性α
和金宝appSupportVectorLabels
以满足配置约束。如果修改一个参数的编码器属性需要后续更改其他相关参数以满足配置约束,则软件更改相关参数的编码器属性。
生成代码
要生成C/ c++代码,必须使用配置正确的C/ c++编译器。MATLAB编码器定位并使用支持的已安装编译器。金宝app你可以用墨西哥人
设置
查看和更改默认编译器。有关详细信息,请参见更改默认编译器。
使用generateCode
来生成代码预测
和更新
支持向量机分类模型(Mdl
)使用默认设置。
generateCode(配置)
generateCode在输出文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“ClassificationSVMModel。代码生成成功。
generateCode
生成生成代码所需的MATLAB文件,包括两个入口点函数predict.m
和update.m
为预测
和更新
的功能Mdl
,分别。然后generateCode
创建一个名为ClassificationSVMModel
中的两个入口点函数codegen \墨西哥人\ ClassificationSVMModel
文件夹,并将MEX函数复制到当前文件夹。
验证生成的代码
传递一些预测器数据来验证是否预测
的函数Mdl
和预测
函数返回相同的标签。要在具有多个入口点的MEX函数中调用入口点函数,请将函数名称指定为第一个输入参数。
[label,score] = predict(Mdl,X);[label_mex,score_mex] = ClassificationSVMModel(“预测”, X);
比较标签
和label_mex
通过使用isequal
。
label_mex isequal(标签)
ans =逻辑1
isequal
返回逻辑1 (真正的
),如果所有输入都相等。比较证实了预测
的函数Mdl
和预测
函数返回相同的标签。
score_mex
可能包括与的舍入差异分数
。在这种情况下,比较score_mex
和分数
允许一个小的容忍。
查找(abs(score-score_mex) > 1e-8)
Ans = 0x1空双列向量
对比证实了分数
和score_mex
是否在容忍范围内相等1 e-8
。
重新训练模型和更新生成代码中的参数
使用整个数据集重新训练模型。
retrainedMdl = fitcsvm(X,Y,…“KernelFunction”,“高斯”,“KernelScale”,“汽车”);
提取要更新的参数validatedUpdateInputs
。中修改的模型参数retrainedMdl
并验证修改后的参数值是否满足参数的编码器属性。
params = validatedUpdateInputs(配置器,retrainedMdl);
更新生成代码中的参数。
ClassificationSVMModel (“更新”params)
验证生成的代码
的输出进行比较预测
的函数retrainedMdl
和预测
函数在更新后的MEX函数中。
[label,score] = predict(retrainedMdl,X);[label_mex,score_mex] = ClassificationSVMModel(“预测”, X);label_mex isequal(标签)
ans =逻辑1
查找(abs(score-score_mex) > 1e-8)
Ans = 0x1空双列向量
对比证实了标签
和labels_mex
是相等的,并且分数值在公差范围内相等。
生成代码中ECOC分类模型参数的更新
使用SVM二进制学习器训练一个纠错输出码(ECOC)模型,并为该模型创建一个编码器配置器。使用编码器配置器的属性来指定ECOC模型参数的编码器属性。使用编码器配置器的对象函数来生成预测新预测器数据标签的C代码。然后使用不同的设置重新训练模型,并在不重新生成代码的情况下更新生成代码中的参数。
火车模型
载入Fisher的虹膜数据集。
负载fisheririsX =平均值;Y =物种;
创建一个支持向量机二进制学习器模板,使用高斯核函数并标准化预测器数据。
t = templateSVM(“KernelFunction”,“高斯”,“标准化”,真正的);
使用模板训练一个多类ECOC模型t
。
Mdl = fitcecoc(X,Y,“学习者”t);
Mdl
是一个ClassificationECOC
对象。
创建编码器配置器
的编码器配置器ClassificationECOC
通过使用learnerCoderConfigurer
。指定预测器数据X
。的learnerCoderConfigurer
函数使用输入X
的编码器属性预测
函数的输入。此外,将输出的数量设置为2,以便生成的代码返回方法的前两个输出预测
函数,它们是预测标签和负平均二值损失。
configurer = learnerCoderConfigurer(Mdl,X,“NumOutputs”, 2)
configurer = ClassificationECOCCoderConfigurer与属性:更新输入:BinaryLearners: [1x1 ClassificationSVMCoderConfigurer]先验:[1x1 LearnerCoderInput]成本:[1x1 LearnerCoderInput]预测输入:X: [1x1 LearnerCoderInput]代码生成参数:NumOutputs: 2 OutputFileName: 'ClassificationECOCModel'属性,方法
配置
是一个ClassificationECOCCoderConfigurer
对象的编码器配置器ClassificationECOC
对象。的可调输入参数预测
和更新
:X
,BinaryLearners
,之前
,成本
。
指定参数的编码器属性
的编码器属性预测
参数(预测器数据和名称-值对参数)“解码”
和“BinaryLoss”
),更新
参数(支持向量机学习器金宝app的支持向量),以便您可以使用这些参数作为的输入参数预测
和更新
在生成的代码中。
的编码器属性X
以便生成的代码接受任意数量的观察值。修改SizeVector
和VariableDimensions
属性。的SizeVector
属性指定预测器数据大小的上限,而VariableDimensions
属性指定预测器数据的每个维度是可变大小还是固定大小。
configuration . x . sizevector = [Inf];configuration . x . variabledimensions = [true false];
第一个维度的大小是观测值的数量。在本例中,代码指定大小的上界为正
大小是可变的,也就是说X
可以有任意数量的观察值。如果在生成代码时不知道观察值的数量,则此规范非常方便。
第二个维度的大小是预测变量的数量。对于机器学习模型,这个值必须是固定的。X
包含4个预测器,所以SizeVector
属性的第二个值必须为4VariableDimensions
属性必须为假
。
的编码器属性BinaryLoss
和解码
要使用“BinaryLoss”
和“解码”
生成代码中的名称-值对参数。的编码器属性BinaryLoss
。
配置。BinaryLoss
ans = EnumeratedInput与属性:值:'hinge' SelectedOption: '内置' BuiltInOptions: {'hamming' '线性' '二次' '指数' '双方差' 'hinge' 'logit'} IsConstant: 1可调性:0
若要在生成的代码中使用非默认值,必须在生成代码之前指定该值。指定价值
的属性BinaryLoss
作为“指数”
。
configurer.BinaryLoss.Value =“指数”;配置。BinaryLoss
ans = EnumeratedInput与属性:值:'指数' SelectedOption: '内置' BuiltInOptions:{'汉明' '线性' '二次' '指数' '双方差' '铰链' 'logit'} IsConstant: 1可调性:1
当修改属性值时可调谐性
是假
(逻辑0),软件设置可调谐性
来真正的
(逻辑1)。
的编码器属性解码
。
配置。解码
ans = EnumeratedInput与属性:值:' lossweights ' SelectedOption: 'Built-in' BuiltInOptions: {' lossweights ' 'lossbased'} IsConstant: 1可调性:0
指定IsConstant
的属性解码
作为假
这样你就可以使用BuiltInOptions
在生成的代码中。
configuration . decoding . isconstant = false;配置。解码
ans = EnumeratedInput与属性:值:[1x1 LearnerCoderInput] SelectedOption: 'NonConstant' BuiltInOptions: {'loss - weighting ' 'loss - based'} IsConstant: 0可调性:1
软件改变了价值
的属性解码
到一个LearnerCoderInput
对象,以便两者都可以使用“lossweighted”
和“lossbased
的值“解码”
。同时,软件设置SelectedOption
来“非常数的”
和可调谐性
来真正的
。
的编码器属性金宝appSupportVectors
在BinaryLearners
。的编码器属性金宝appSupportVectors
。
configurer.BinaryLearners.金宝appSupportVectors
ans = LearnerCoderInput with properties: SizeVector: [554] VariableDimensions: [10] DataType: 'double'可调性:1
的默认值。VariableDimensions
是(真假)
因为每个学习者有不同数量的支持向量。金宝app如果使用新数据或不同的设置重新训练ECOC模型,支持向量机学习器中的支持向量数量可能会有所不同。金宝app因此,增大支持向量个数的上界。金宝app
configuration . binarylear金宝appners . supportvectors . sizevector = [1504];
Alpha的SizeVector属性已被修改以满足配置约束。SupportVectorLabels的SizeV金宝appector属性已被修改以满足配置约束。
的编码器属性金宝appSupportVectors
,然后软件修改编码器属性α
和金宝appSupportVectorLabels
以满足配置约束。如果修改一个参数的编码器属性需要后续更改其他相关参数以满足配置约束,则软件更改相关参数的编码器属性。
显示编码器配置器。
配置
configurer = ClassificationECOCCoderConfigurer与属性:更新输入:BinaryLearners: [1x1 ClassificationSVMCoderConfigurer]先验:[1x1 LearnerCoderInput]成本:[1x1 LearnerCoderInput]预测输入:X: [1x1 LearnerCoderInput] BinaryLoss: [1x1 EnumeratedInput]解码:[1x1 EnumeratedInput]代码生成参数:NumOutputs: 2 OutputFileName: 'ClassificationECOCModel'属性,方法
现在的显示包括BinaryLoss
和解码
也
生成代码
要生成C/ c++代码,必须使用配置正确的C/ c++编译器。MATLAB编码器定位并使用支持的已安装编译器。金宝app你可以用墨西哥人
设置
查看和更改默认编译器。有关详细信息,请参见更改默认编译器。
为预测
和更新
ECOC分类模型的功能(Mdl
).
generateCode(配置)
generateCode在输出文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“ClassificationECOCModel。代码生成成功。
的generateCode
Function完成这些动作:
生成MATLAB文件所需的生成代码,包括两个入口点函数
predict.m
和update.m
为预测
和更新
的功能Mdl
,分别。创建一个名为
ClassificationECOCModel
对于两个入口点函数。控件中为MEX函数创建代码
codegen \墨西哥人\ ClassificationECOCModel
文件夹中。将MEX函数复制到当前文件夹。
验证生成的代码
传递一些预测器数据来验证是否预测
的函数Mdl
和预测
函数返回相同的标签。要在具有多个入口点的MEX函数中调用入口点函数,请将函数名称指定为第一个输入参数。因为你指定了“解码”
作为可调的输入参数IsConstant
属性,您还需要在对MEX函数的调用中指定它“lossweighted”
默认值是“解码”
。
[label,NegLoss] =预测(Mdl,X,)“BinaryLoss”,“指数”);[label_mex, neglo_mex] = ClassificationECOCModel()“预测”, X,“BinaryLoss”,“指数”,“解码”,“lossweighted”);
比较标签
来label_mex
通过使用isequal
。
label_mex isequal(标签)
ans =逻辑1
isequal
返回逻辑1 (真正的
),如果所有输入都相等。比较证实了预测
的函数Mdl
和预测
函数返回相同的标签。
NegLoss_mex
可能包括与的舍入差异NegLoss
。在这种情况下,比较NegLoss_mex
来NegLoss
允许一个小的容忍。
查找(abs(negloss - neglo_mex) > 1e-8)
Ans = 0x1空双列向量
对比证实了NegLoss
和NegLoss_mex
是否在容忍范围内相等1 e-8
。
重新训练模型和更新生成代码中的参数
使用不同的设置重新训练模型。指定“KernelScale”
作为“汽车”
软件采用启发式方法选择合适的比例因子。
t_new = templateSVM(“KernelFunction”,“高斯”,“标准化”,真的,“KernelScale”,“汽车”);retrainedMdl = fitcecoc(X,Y,“学习者”, t_new);
提取要更新的参数validatedUpdateInputs
。中修改的模型参数retrainedMdl
并验证修改后的参数值是否满足参数的编码器属性。
params = validatedUpdateInputs(配置器,retrainedMdl);
更新生成代码中的参数。
ClassificationECOCModel (“更新”params)
验证生成的代码
的输出进行比较预测
的函数retrainedMdl
的输出预测
函数在更新后的MEX函数中。
[label,NegLoss] = predict(retrainedMdl,X,)“BinaryLoss”,“指数”,“解码”,“lossbased”);[label_mex, neglo_mex] = ClassificationECOCModel()“预测”, X,“BinaryLoss”,“指数”,“解码”,“lossbased”);label_mex isequal(标签)
ans =逻辑1
查找(abs(negloss - neglo_mex) > 1e-8)
Ans = 0x1空双列向量
对比证实了标签
和label_mex
是相等的,并且NegLoss
和NegLoss_mex
在容忍范围内都是平等的。
生成代码中SVM回归模型参数的更新
使用部分数据集训金宝app练支持向量机(SVM)模型,并为该模型创建编码器配置器。使用编码器配置器的属性来指定SVM模型参数的编码器属性。使用编码器配置器的对象函数来生成预测新预测器数据响应的C代码。然后使用整个数据集重新训练模型,并在不重新生成代码的情况下更新生成代码中的参数。
火车模型
加载carsmall
数据集。
负载carsmallX =[马力,重量];Y = mpg;
使用前50个观测值和具有自动核标度的高斯核函数训练SVM回归模型。
Mdl = fitrsvm(X(1:50,:),Y(1:50),…“KernelFunction”,“高斯”,“KernelScale”,“汽车”);
Mdl
是一个RegressionSVM
对象。
创建编码器配置器
的编码器配置器RegressionSVM
通过使用learnerCoderConfigurer
。指定预测器数据X
。的learnerCoderConfigurer
函数使用输入X
的编码器属性预测
函数的输入。
configurer = learnerCoderConfigurer(Mdl,X(1:50,:));
配置
是一个RegressionSVMCoderConfigurer
对象的编码器配置器RegressionSVM
对象。
指定参数的编码器属性
指定SVM回归模型参数的编码器属性,以便您可以在重新训练模型后更新生成代码中的参数。此示例指定您希望传递给生成的代码的预测器数据的编码器属性,以及SVM回归模型的支持向量的编码器属性。金宝app
的编码器属性X
以便生成的代码接受任意数量的观察值。修改SizeVector
和VariableDimensions
属性。的SizeVector
属性指定预测器数据大小的上限,而VariableDimensions
属性指定预测器数据的每个维度是可变大小还是固定大小。
configuration . x . sizevector = [Inf];configuration . x . variabledimensions = [true false];
第一个维度的大小是观测值的数量。在本例中,代码指定大小的上界为正
大小是可变的,也就是说X
可以有任意数量的观察值。如果在生成代码时不知道观察值的数量,则此规范非常方便。
第二个维度的大小是预测变量的数量。对于机器学习模型,这个值必须是固定的。X
包含两个预测器,所以SizeVector
属性的值必须为2VariableDimensions
属性必须为假
。
如果使用新数据或不同的设置重新训练SVM模型,支持向量的数量可能会有所不同。金宝app的编码器属性金宝appSupportVectors
这样您就可以更新生成代码中的支持向量。金宝app
configurati金宝appon . supportvectors . sizevector = [250 2];
Alpha的SizeVector属性已被修改以满足配置约束。
configurati金宝appon . supportvectors . variabledimensions =[真假];
Alpha的VariableDimensions属性已被修改以满足配置约束。
的编码器属性金宝appSupportVectors
,然后软件修改编码器属性α
以满足配置约束。如果修改一个参数的编码器属性需要后续更改其他相关参数以满足配置约束,则软件更改相关参数的编码器属性。
生成代码
要生成C/ c++代码,必须使用配置正确的C/ c++编译器。MATLAB编码器定位并使用支持的已安装编译器。金宝app你可以用墨西哥人
设置
查看和更改默认编译器。有关详细信息,请参见更改默认编译器。
使用generateCode
来生成代码预测
和更新
支持向量机回归模型(Mdl
)使用默认设置。
generateCode(配置)
generateCode在输出文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“RegressionSVMModel。代码生成成功。
generateCode
生成生成代码所需的MATLAB文件,包括两个入口点函数predict.m
和update.m
为预测
和更新
的功能Mdl
,分别。然后generateCode
创建一个名为RegressionSVMModel
中的两个入口点函数codegen \墨西哥人\ RegressionSVMModel
文件夹,并将MEX函数复制到当前文件夹。
验证生成的代码
传递一些预测器数据来验证是否预测
的函数Mdl
和预测
函数返回相同的预测响应。要在具有多个入口点的MEX函数中调用入口点函数,请将函数名称指定为第一个输入参数。
yfit = predict(Mdl,X);yfit_mex =回归svm模型(“预测”, X);
yfit_mex
可能包括与的舍入差异yfit
。在这种情况下,比较yfit
和yfit_mex
允许一个小的容忍。
查找(abs(yfit-yfit_mex) > 1e-6)
Ans = 0x1空双列向量
对比证实了yfit
和yfit_mex
是否在容忍范围内相等1 e-6
。
重新训练模型和更新生成代码中的参数
使用整个数据集重新训练模型。
retrainedMdl = fitrsvm(X,Y,…“KernelFunction”,“高斯”,“KernelScale”,“汽车”);
提取要更新的参数validatedUpdateInputs
。中修改的模型参数retrainedMdl
并验证修改后的参数值是否满足参数的编码器属性。
params = validatedUpdateInputs(配置器,retrainedMdl);
更新生成代码中的参数。
RegressionSVMModel (“更新”params)
验证生成的代码
的输出进行比较预测
的函数retrainedMdl
和预测
函数在更新后的MEX函数中。
yfit = predict(retrainedMdl,X);yfit_mex =回归svm模型(“预测”, X);查找(abs(yfit-yfit_mex) > 1e-6)
Ans = 0x1空双列向量
对比证实了yfit
和yfit_mex
是否在容忍范围内相等1 e-6
。
更新生成代码中回归树模型的参数
使用部分数据集训练回归树,并为模型创建编码器配置器。使用编码器配置器的属性来指定模型参数的编码器属性。使用编码器配置器的对象函数来生成预测新预测器数据响应的C代码。然后使用整个数据集重新训练模型,在不重新生成代码的情况下更新生成代码中的参数。
火车模型
加载carbig
数据集,并使用一半的观测值训练回归树模型。
负载carbigX =[排量马力重量];Y = mpg;rng (“默认”)%为了重现性n = length(Y);idxTrain = randsample(n,n/2);XTrain = X(idxTrain,:);YTrain = Y(idxTrain);Mdl = fittrtree (XTrain,YTrain);
Mdl
是一个RegressionTree
对象。
创建编码器配置器
的编码器配置器RegressionTree
通过使用learnerCoderConfigurer
。指定预测器数据XTrain
。的learnerCoderConfigurer
函数使用输入XTrain
的编码器属性预测
函数的输入。另外,将输出的数量设置为2,以便生成的代码返回预测的响应和预测的节点号。
configurer = learnerCoderConfigurer(Mdl,XTrain,“NumOutputs”2);
配置
是一个RegressionTreeCoderConfigurer
对象的编码器配置器RegressionTree
对象。
指定参数的编码器属性
指定回归树模型参数的编码器属性,以便您可以在重新训练模型后更新生成的代码中的参数。
的编码器属性X
的属性配置
以便生成的代码接受任意数量的观察值。修改SizeVector
和VariableDimensions
属性。的SizeVector
属性指定预测器数据大小的上限,而VariableDimensions
属性指定预测器数据的每个维度是可变大小还是固定大小。
configuration . x . sizevector = [Inf];configurer.X.VariableDimensions
ans =1x2逻辑阵列1 0
第一个维度的大小是观测值的数量。的值SizeVector
属性来正
参数的值被软件修改VariableDimensions
属性来1
。换句话说,大小的上界是正
而且大小是可变的,这意味着预测数据可以有任意数量的观察值。如果在生成代码时不知道观察值的数量,则此规范非常方便。
第二个维度的大小是预测变量的数量。对于机器学习模型,这个值必须是固定的。因为预测器数据包含3个预测器,所以SizeVector
属性必须为3.
的值VariableDimensions
属性必须为0
。
如果使用新数据或不同的设置重新训练树模型,树中的节点数量可能会有所不同。的第一个维度SizeVector
属性,以便您可以更新生成代码中的节点数量:孩子们
,割点
,CutPredictorIndex
,或NodeMean
。然后软件自动修改其他属性。
的第一个值SizeVector
属性NodeMean
财产正
。软件修改SizeVector
和VariableDimensions
的属性孩子们
,割点
,CutPredictorIndex
以匹配树中节点数的新上界。的第一个值VariableDimensions
的属性NodeMean
更改1
。
configuration . nodemean . sizevector = [Inf];
已经修改了儿童的SizeVector属性以满足配置约束。切割点的SizeVector属性已被修改以满足配置约束。已经修改了CutPredictorIndex的SizeVector属性,以满足配置约束。已经修改了Children的VariableDimensions属性以满足配置约束。CutPoint的VariableDimensions属性已被修改以满足配置约束。已经修改了CutPredictorIndex的VariableDimensions属性,以满足配置约束。
configurer.NodeMean.VariableDimensions
ans =1x2逻辑阵列1 0
生成代码
要生成C/ c++代码,必须使用配置正确的C/ c++编译器。MATLAB编码器定位并使用支持的已安装编译器。金宝app你可以用墨西哥人
设置
查看和更改默认编译器。有关详细信息,请参见更改默认编译器。
为预测
和更新
回归树模型(Mdl
).
generateCode(配置)
generateCode在输出文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“RegressionTreeModel。代码生成成功。
的generateCode
Function完成这些动作:
生成MATLAB文件所需的生成代码,包括两个入口点函数
predict.m
和update.m
为预测
和更新
的功能Mdl
,分别。创建一个名为
RegressionTreeModel
对于两个入口点函数。控件中为MEX函数创建代码
codegen \墨西哥人\ RegressionTreeModel
文件夹中。将MEX函数复制到当前文件夹。
验证生成的代码
传递一些预测器数据来验证是否预测
的函数Mdl
和预测
函数返回相同的预测响应。要在具有多个入口点的MEX函数中调用入口点函数,请将函数名称指定为第一个输入参数。
[Yfit,node] = predict(Mdl,XTrain);[Yfit_mex,node_mex] = RegressionTreeModel(“预测”, XTrain);
比较Yfit
来Yfit_mex
和节点
来node_mex
。
马克斯(abs (Yfit-Yfit_mex), [],“所有”)
Ans = 0
node_mex isequal(节点)
ans =逻辑1
一般来说,Yfit_mex
可能包括与的舍入差异Yfit
。在这种情况下,比较证实了Yfit
和Yfit_mex
是相等的。
isequal
返回逻辑1 (真正的
),如果所有输入参数都相等。比较证实了预测
的函数Mdl
和预测
函数返回相同的节点号。
重新训练模型和更新生成代码中的参数
使用整个数据集重新训练模型。
retrainedMdl = fittrtree (X,Y);
提取要更新的参数validatedUpdateInputs
。中修改的模型参数retrainedMdl
并验证修改后的参数值是否满足参数的编码器属性。
params = validatedUpdateInputs(配置器,retrainedMdl);
更新生成代码中的参数。
RegressionTreeModel (“更新”params)
验证生成的代码
的输出参数进行比较预测
的函数retrainedMdl
和预测
函数在更新后的MEX函数中。
[Yfit,node] = predict(retrainedMdl,X);[Yfit_mex,node_mex] = RegressionTreeModel(“预测”, X);马克斯(abs (Yfit-Yfit_mex), [],“所有”)
Ans = 0
node_mex isequal(节点)
ans =逻辑1
结果表明,预测响应和节点数是相等的。
输入参数
Mdl
- - - - - -机器学习模型
模型对象
机器学习模型,指定为模型对象,如支持的模型表所示。金宝app
模型 | 模型对象 |
---|---|
多类分类的二叉决策树 | CompactClassificationTree |
支持向量机用于一类和二元分类 | CompactClassificationSVM |
二元分类的线性模型 | ClassificationLinear |
支持向量机的多类模型与线性模型 | CompactClassificationECOC |
二叉决策树回归 | CompactRegressionTree |
金宝app支持向量机(SVM)回归 | CompactRegressionSVM |
线性回归 | RegressionLinear |
有关机器学习模型的代码生成使用说明和限制,请参阅模型对象页面的代码生成部分。
参数个数
- - - - - -要更新的参数
结构
机器学习模型中要更新的参数,指定为一个结构,其中每个参数都有要更新的字段。
创建参数个数
通过使用validatedUpdateInputs
函数。该函数在重新训练的模型中检测修改后的参数,验证修改后的参数值是否满足参数的编码器属性,并返回要更新的参数作为结构。
您可以更新的参数集取决于机器学习模型,如下表所示。
模型 | 要更新的参数 |
---|---|
多类分类的二叉决策树 | 孩子们 ,ClassProbability ,成本 ,割点 ,CutPredictorIndex ,之前 |
支持向量机用于一类和二元分类 |
|
二元分类的线性模型 | β ,偏见 ,成本 ,之前 |
支持向量机的多类模型与线性模型 | |
二叉决策树回归 | 孩子们 ,割点 ,CutPredictorIndex ,NodeMean |
支持向量机回归 |
|
线性回归 | β ,偏见 |
提示
如果您在重新训练模型时修改了该表中列出的任何名称-值对参数,则无法使用
更新
更新参数。您必须重新生成C/ c++代码。模型 更新时不支持参数金宝app 多类分类的二叉决策树 参数的 fitctree
- - - - - -一会
,ScoreTransform
支持向量机用于一类和二元分类 参数的 fitcsvm
- - - - - -一会
,KernelFunction
,PolynomialOrder
,ScoreTransform
,标准化
二元分类的线性模型 参数的 fitclinear
- - - - - -一会
,ScoreTransform
支持向量机的多类模型与线性模型 如果指定二进制学习器
fitcecoc
作为模板对象(参见学习者
),那么对于每个二元学习器,你不能修改以下内容:参数的
templateSVM
- - - - - -KernelFunction
,PolynomialOrder
,标准化
参数的
templateLinear
- - - - - -学习者
二叉决策树回归 参数的 fitrtree
- - - - - -ResponseTransform
支持向量机回归 参数的 fitrsvm
- - - - - -KernelFunction
,PolynomialOrder
,ResponseTransform
,标准化
线性回归 参数的 fitrlinear
- - - - - -ResponseTransform
在编码器配置器工作流中,您使用
generateCode
要创建update.m
入口点函数和入口点函数的MEX函数。假设MEX函数的名称为myModel
,你打电话更新
使用此语法。myModel (“更新”params)
要查看如何在入口点函数中使用此页中描述的语法,请显示
update.m
和initialize.m
使用类型
函数。类型update.m类型initialize.m
控件的内容的示例
update.m
和initialize.m
文件,请参阅使用编码器配置器生成代码。
算法
在编码器配置器工作流中Mdl
的输入参数更新
模型是由loadLearnerForCoder
。这个模型和updatedMdl
对象是简化的分类或回归模型,主要包含预测所需的属性。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
通过使用创建编码器配置器
learnerCoderConfigurer
然后生成代码预测
和更新
通过使用对象函数generateCode
。关于代码生成的使用说明和机器学习模型的限制
Mdl
,请参阅模型对象页面的代码生成部分。模型 模型对象 多类分类的二叉决策树 CompactClassificationTree
支持向量机用于一类和二元分类 CompactClassificationSVM
二元分类的线性模型 ClassificationLinear
支持向量机的多类模型与线性模型 CompactClassificationECOC
二叉决策树回归 CompactRegressionTree
金宝app支持向量机(SVM)回归 CompactRegressionSVM
线性回归 RegressionLinear
有关更多信息,请参见代码生成简介。
版本历史
在R2018b中引入
Abrir比如
Tiene una versión modificada de este ejemploo。是否对所有的修改进行了修改?
MATLAB编程
在MATLAB中,该函数对应于一个最基本的函数:
在MATLAB中,用MATLAB编写了仿真程序。Los navegadores web no admit commandos de MATLAB。
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。