主要内容

更新

更新代码生成的模型参数

描述

生成C/ c++代码预测更新使用编码器配置器对象的机器学习模型的功能。通过使用创建此对象Learnercoderconfigurer其目标函数generateCode.然后你可以用更新函数来更新生成的代码中的模型参数,而无需重新生成代码。当您使用新数据或设置重新训练模型时,该特性减少了重新生成、重新部署和重新验证C/ c++代码所需的工作。

该流程图显示了使用编码器配置器的代码生成工作流。使用更新对于突出的步骤。

如果不生成代码,则不需要使用更新功能。当你再培训在MATLAB模型®时,返回的模型已经包括修改后的参数。

例子

updatedmdl.=更新(Mdl参数个数的更新版本Mdl包含新参数参数个数

在重新培训一个模型后,使用validatedUpdateInputs函数检测重新训练的模型中修改的参数,并验证修改后的参数值是否满足参数的编码器属性。使用的输出validatedUpdateInputs,作为输入参数个数更新模型参数。

例子

全部折叠

使用部分数据集训练支持向量机模型,并为模型创建编码器配置器。使用编码器配置器的属性来指定支持向量机模型参数的编码器属性。使用编码器配置器的对象函数生成C代码,用于预测新的预测数据的标签。然后重新训练使用在生成的代码中的整个数据集和更新参数模型,而不重新生成的代码。

火车模型

加载电离层数据集。该数据集有34个预测器和351个雷达返回的二进制响应,或坏(“b”)或好('G').使用前50个观察训练的二元SVM分类模型。

加载电离层mdl = fitcsvm(x(1:50,:),y(1:50));

Mdl是A.分类VM.对象。

创建编码器配置者

控件创建一个编码器配置器分类VM.模型通过使用Learnercoderconfigurer.指定预测器数据X.这Learnercoderconfigurer功能使用输入X属性的编码器属性预测功能输入。此外,将输出的数量设置为2,以便生成的代码返回预测的标签和分数。

配置= learnerCoderConfigurer (Mdl X (1:50,:)“NumOutputs”2);

配置程序是A.ClassificationSVMCoderConfigurer对象,它是一个编码器配置器一分类VM.对象。

指定参数的编码器属性

指定SVM分类模型参数的编码器属性,以便在重新训练模型后更新生成代码中的参数。此示例指定要传递给生成代码的预测器数据的编码器属性,以及支持向量机模型的支持向量的编码器属性。万博1manbetx

首先,指定编码器属性X这样生成的代码就可以接受任意数量的观察。修改秘诀杂色金属依赖项属性。这秘诀属性指定上限的预测数据大小,和杂色金属依赖项属性指定预测器数据的每个维度是否具有可变大小或固定大小。

configuration . x . sizevector = [Inf 34];configurer.X.VariableDimensions = [true false];

第一个维度的大小是观测的次数。在本例中,代码指定大小的上限为INF.大小是可变的,也就是说X可以有任意数量的观察结果。如果您在生成代码时不知道观察的数量,那么这个规范很方便。

第二个维度的大小是预测变量的数量。对于机器学习模型,这个值必须是固定的。X包含34个预测,所以的值秘诀属性必须是34和的值杂色金属依赖项属性必须

如果使用新的数据或不同的设置重新训练SVM模型,支持向量的数量可能会有所不同。万博1manbetx因此,指定的编码器属性万博1manbetxSupportVectors这样就可以更新生成的代码支持向量。万博1manbetx

configurer.万博1manbetxSupportVectors.SizeVector = [250 34];
Alpha的SizeVector属性已被修改以满足配置约束。修改了SupportVectorLabels的Si万博1manbetxzeVector属性以满足配置约束。
configurer.万博1manbetxsupportVectors.variabledimensions = [true false];
已修改Alpha的VariableDimensions属性以满足配置约束。修改了SupportVectorLabels的VariableDi万博1manbetxmensions属性以满足配置约束。

如果修改编码器属性万博1manbetxSupportVectors,然后软件修改的编码器属性Α万博1manbetxSupportVectorLabels满足配置约束。如果一个参数的编码器属性的修改需要随后的改变对其他从属参数来满足配置约束,则软件改变了从属参数的编码器属性。

生成代码

要生成C/ c++代码,您必须访问配置正确的C/ c++编译器。MATLAB编码器定位并使用一个受支持的、安装的编译器。万博1manbetx您可以使用墨西哥人设置查看和更改默认编译器。有关详细信息,请参见改变默认的编译器

使用generateCode为此生成代码预测更新SVM分类模型的函数(Mdl)默认设置。

generateCode(配置)
generateCode创建输出文件夹在这些文件中: 'initialize.m', 'predict.m', 'update.m', 'ClassificationSVMModel.mat' 代码生成成功。

generateCode生成生成代码所需的MATLAB文件,包括两个入口点函数predict.mupdate.m为了预测更新功能Mdl, 分别。然后generateCode创建一个名为ClassificationsVMModel.对于两个入口点函数代码生成\ MEX \ ClassificationSVMModel文件夹并将MEX函数复制到当前文件夹。

验证生成的代码

通过一些预测数据来验证是否预测的函数Mdl预测函数中返回相同的标签。要在具有多个入口点的MEX函数中调用入口点函数,请将函数名指定为第一个输入参数。

(标签,分数)=预测(Mdl X);[label_mex, score_mex] = ClassificationSVMModel (“预测”, X);

相比标签label_mex通过使用是平等的

label_mex isequal(标签)
ans =逻辑1

是平等的返回逻辑1(真正的)如果所有输入相等。比较证实了预测的函数Mdl预测函数中返回相同的标签。

得分_mex.可能包括舍入差异与分数.在这种情况下,比较得分_mex.分数,允许有一个小的公差。

查找(ABS(得分 - 得分_MEX)> 1E-8)
ANS =为0x1空双列向量

比较证实了分数得分_mex.在公差范围内相等1E-8

培训模型和生成代码中的更新参数

使用整个数据集重新培训模型。

retrainedMdl = fitcsvm (X, Y);

通过使用提取要更新的参数validatedUpdateInputs.此功能检测到修改的模型参数retrainedMdl并验证修改后的参数值是否满足参数的编码器属性。

params = validatedUpdateInputs(配置、retrainedMdl);

更新生成代码中的参数。

ClassificationSVMModel ('更新',则params)

验证生成的代码

的输出比较预测的函数retrainedMdl预测函数。

(标签,分数)=预测(retrainedMdl X);[label_mex, score_mex] = ClassificationSVMModel (“预测”, X);label_mex isequal(标签)
ans =逻辑1
查找(ABS(得分 - 得分_MEX)> 1E-8)
ANS =为0x1空双列向量

比较证实了标签labels_mex是相等的,而分数值在公差范围内相等。

使用SVM二进制学习者训练纠错输出编码(ECOC)模型,并创建一个编码器配置器为模型。使用的编码器配置者的属性来指定ECOC模型参数的编码属性。使用编码器配置器的对象函数生成C代码,用于预测新的预测数据的标签。然后使用不同的设置,并且在所生成的代码更新参数,而不重新生成的代码重新训练模型。

火车模型

装载Fisher的Iris数据集。

加载fisheririsX =量;Y =物种;

创建SVM二进制学习者模板以使用高斯内核功能并标准化预测器数据。

t = templateSVM (“KernelFunction”“高斯”“标准化”,真正的);

使用模板训练多牌ecoc模型T.

Mdl = fitcecoc (X, Y,'学习者't);

Mdl是A.ClassificationECOC对象。

创建编码器配置者

控件创建一个编码器配置器ClassificationECOC模型通过使用Learnercoderconfigurer.指定预测器数据X.这Learnercoderconfigurer功能使用输入X属性的编码器属性预测功能输入。此外,将输出的数量设置为2,以便生成的代码返回第一个输出预测功能,是预测标签和否定平均二进制损失。

配置器= learnerCoderConfigurer(MDL,X,“NumOutputs”, 2)
配置= ClassificationECOCCoderConfigurer属性:更新输入:BinaryLearners:之前[1 x1 ClassificationSVMCoderConfigurer]: [1 x1 LearnerCoderInput]成本:[1 x1 LearnerCoderInput]预测输入:X: [1 x1 LearnerCoderInput]代码生成参数:NumOutputs: 2 OutputFileName:“ClassificationECOCModel”属性,方法

配置程序是A.ClassificationECOCCoderConfigurer对象,它是一个编码器配置器一ClassificationECOC对象。的可调参数预测更新XBinaryLearners之前,成本

指定参数的编码器属性

的编码器属性预测参数(预测数据和名称 - 值对参数'解码'“BinaryLoss”),更新参数(支持向量机学习器万博1manbetx的支持向量),以便您可以使用这些参数作为的输入参数预测更新在生成的代码中。

首先,指定编码器属性X这样生成的代码就可以接受任意数量的观察。修改秘诀杂色金属依赖项属性。这秘诀属性指定上限的预测数据大小,和杂色金属依赖项属性指定预测器数据的每个维度是否具有可变大小或固定大小。

configurer.X.SizeVector = [Inf文件4];configurer.X.VariableDimensions = [true false];

第一个维度的大小是观测的次数。在本例中,代码指定大小的上限为INF.大小是可变的,也就是说X可以有任意数量的观察结果。如果您在生成代码时不知道观察的数量,那么这个规范很方便。

第二个维度的大小是预测变量的数量。对于机器学习模型,这个值必须是固定的。X包含4个预测因子,所以第二个值秘诀属性必须为4和第二个值杂色金属依赖项属性必须

接下来,修改的编码器属性二进制数解码用来“BinaryLoss”'解码'生成的代码中的名称-值对参数。的编码属性二进制数

configur.binaryloss.
ans = EnumeratedInput与属性:值:'hinge' SelectedOption: ' built ' BuiltInOptions: {1x7 cell} IsConstant: 1可调性:0

要在生成的代码中使用非默认值,必须在生成代码之前指定值。指定价值属性二进制数作为“指数”

configurer.BinaryLoss.Value =“指数”;configur.binaryloss.
ANS = EnumeratedInput与属性:属性值: '指数' SelectedOption: '内置' BuiltInOptions:{1X7细胞} IsConstant:1个可调谐性:1

如果您在何时修改属性值可调性(逻辑0),软件设置可调性真正的(逻辑1)。

的编码属性解码

configurer.decoding.
ans = EnumeratedInput与属性:值:' lossweights ' SelectedOption: ' built ' BuiltInOptions: {' lossweights ' ' losssbased '} IsConstant: 1可调性:0

指定IsConstant属性解码作为这样您就可以使用所有可用值BuiltInOptions在生成的代码中。

configurer.Decoding.IsConstant = FALSE;configurer.decoding.
ANS = eNumerateDupput使用属性:value:[1x1 LearnerCoderInput] SelectedOption:'不可置位'内置选项:{'lockwuighted''丢失备用'} iSononstant:0可调性:1

该软件改变价值属性解码到A.LearnerCoderInput对象使您可以使用两者“lossweighted”“lossbased'AS的值'解码'.此外,软件设置SelectedOption“非常数的”可调性真正的

最后,修改的编码器属性万博1manbetxSupportVectorsBinaryLearners.的编码属性万博1manbetxSupportVectors

configur.binarylearners.su万博1manbetxpportVectors.
ans = LearnerCoderInput带有属性:SizeVector: [54 4] VariableDimensions: [1 0] DataType: 'double'可调性:1

默认值杂色金属依赖项[真假]因为每个学习者都有不同数量的支持向量。万博1manbetx如果您使用新的数据或不同的设置重新训练ECOC模型,SVM学习器中的支持向量的数量可能会有所不同。万博1manbetx因此,增大支持向量数目的上界。万博1manbetx

configurer.BinaryLearners.万博1manbetxSupportVectors.SizeVector = [150 4];
Alpha的SizeVector属性已被修改以满足配置约束。修改了SupportVectorLabels的Si万博1manbetxzeVector属性以满足配置约束。

如果修改编码器属性万博1manbetxSupportVectors,然后软件修改的编码器属性Α万博1manbetxSupportVectorLabels满足配置约束。如果一个参数的编码器属性的修改需要随后的改变对其他从属参数来满足配置约束,则软件改变了从属参数的编码器属性。

显示编码器配置器。

配置程序
configurer = ClassificationCocoderConfigurer具有属性:更新输入:BinaryLearners:[1x1 scresisificsvmcoderConfigurer]之前:[1x1 LearnercoderInput]预测输入:x:[1x1 inumerateDute] Binaryloss:[1x1 enumerateInput]解码:[1x1 enumerateInput]代码生成参数:NUMOUTPUTS:2 OUTPUTFILENAME:'ClassificationCocModel'属性,方法

现在显示器包括二进制数解码也是。

生成代码

要生成C/ c++代码,您必须访问配置正确的C/ c++编译器。MATLAB编码器定位并使用一个受支持的、安装的编译器。万博1manbetx您可以使用墨西哥人设置查看和更改默认编译器。有关详细信息,请参见改变默认的编译器

为此生成代码预测更新ECOC分类模式的功能(Mdl).

generateCode(配置)
generateCode在输出文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“ClassificationECOCModel。代码生成成功。

generateCode函数完成这些操作:

  • 生成MATLAB文件所需的生成代码,包括两个入口点函数predict.mupdate.m为了预测更新功能Mdl, 分别。

  • 创建一个名为classificationcocmodel.两个入口点函数。

  • 创建MEX函数的代码codegen \墨西哥人\ ClassificationECOCModel文件夹。

  • 将MEX函数复制到当前文件夹。

验证生成的代码

通过一些预测数据来验证是否预测的函数Mdl预测函数中返回相同的标签。要在具有多个入口点的MEX函数中调用入口点函数,请将函数名指定为第一个输入参数。因为你指定的'解码'作为可调参数,通过更改IsConstant在生成代码之前的属性,您还需要在对MEX函数的调用中指定它,即使“lossweighted”是的默认值'解码'

[标签,dropsа] =预测(mdl,x,“BinaryLoss”“指数”);[label_mex,delcolloss_mex] = classificationecocmodel(“预测”,X,“BinaryLoss”“指数”'解码'“lossweighted”);

相比标签label_mex通过使用是平等的

label_mex isequal(标签)
ans =逻辑1

是平等的返回逻辑1(真正的)如果所有输入相等。比较证实了预测的函数Mdl预测函数中返回相同的标签。

opoloss_mex.可能包括舍入差异与NegLoss.在这种情况下,比较opoloss_mex.NegLoss,允许有一个小的公差。

找到(ABS(NegLoss-NegLoss_mex)> 1E-8)
ANS =为0x1空双列向量

比较证实了NegLossopoloss_mex.在公差范围内相等1E-8

培训模型和生成代码中的更新参数

使用不同的设置重新培训模型。指定'kernelscale'作为'汽车'因此,该软件采用启发式的方法选择合适的比例因子。

t_new = templateSVM (“KernelFunction”“高斯”“标准化”,真的,'kernelscale''汽车');RetrowingMDL = FitCecoc(X,Y,'学习者',t_new);

通过使用提取要更新的参数validatedUpdateInputs.此功能检测到修改的模型参数retrainedMdl并验证修改后的参数值是否满足参数的编码器属性。

params = validatedUpdateInputs(配置、retrainedMdl);

更新生成代码中的参数。

ClassificationECOCModel ('更新',则params)

验证生成的代码

的输出比较预测的函数retrainedMdl的输出预测函数。

[标签,NegLoss] =预测(retrainedMdl X,“BinaryLoss”“指数”'解码''lossbased');[label_mex,delcolloss_mex] = classificationecocmodel(“预测”,X,“BinaryLoss”“指数”'解码''lossbased');label_mex isequal(标签)
ans =逻辑1
找到(ABS(NegLoss-NegLoss_mex)> 1E-8)
ANS =为0x1空双列向量

比较证实了标签label_mex是相等的,NegLossopoloss_mex.在公差范围内是相等的。

使用部分数据集训万博1manbetx练支持向量机(SVM)模型,并创建一个编码器配置器为模型。使用编码器配置器的属性来指定支持向量机模型参数的编码器属性。使用编码器配置器的对象函数来生成C代码,用于预测新的预测器数据的响应。然后重新训练使用在生成的代码中的整个数据集和更新参数模型,而不重新生成的代码。

火车模型

加载carsmall数据集和训练支持向量机回归模型使用前50个观察。

加载carsmallx = [马力,重量];Y = MPG;mdl = fitrsvm(x(1:50,:),y(1:50));

Mdl是A.回归vm.对象。

创建编码器配置者

控件创建一个编码器配置器回归vm.模型通过使用Learnercoderconfigurer.指定预测器数据X.这Learnercoderconfigurer功能使用输入X属性的编码器属性预测功能输入。

配置= learnerCoderConfigurer (Mdl X (1:50,:));

配置程序是A.RegressionSVMCoderConfigurer对象,它是一个编码器配置器一回归vm.对象。

指定参数的编码器属性

指定支持向量机回归模型参数的编码器属性,以便您可以在重新训练模型后更新生成代码中的参数。此示例指定要传递给生成代码的预测器数据的编码器属性,以及支持向量机回归模型的支持向量的编码器属性。万博1manbetx

首先,指定编码器属性X这样生成的代码就可以接受任意数量的观察。修改秘诀杂色金属依赖项属性。这秘诀属性指定上限的预测数据大小,和杂色金属依赖项属性指定预测器数据的每个维度是否具有可变大小或固定大小。

configuration . x . sizevector = [Inf 2];configurer.X.VariableDimensions = [true false];

第一个维度的大小是观测的次数。在本例中,代码指定大小的上限为INF.大小是可变的,也就是说X可以有任意数量的观察结果。如果您在生成代码时不知道观察的数量,那么这个规范很方便。

第二个维度的大小是预测变量的数量。对于机器学习模型,这个值必须是固定的。X包含两个预测器,因此秘诀属性的值必须为2杂色金属依赖项属性必须

如果使用新的数据或不同的设置重新训练SVM模型,支持向量的数量可能会有所不同。万博1manbetx因此,指定的编码器属性万博1manbetxSupportVectors这样就可以更新生成的代码支持向量。万博1manbetx

configurer.万博1manbetxSupportVectors.SizeVector = [250 2];
Alpha的SizeVector属性已被修改以满足配置约束。
configurer.万博1manbetxsupportVectors.variabledimensions = [true false];
已修改Alpha的VariableDimensions属性以满足配置约束。

如果修改编码器属性万博1manbetxSupportVectors,然后软件修改的编码器属性Α满足配置约束。如果一个参数的编码器属性的修改需要随后的改变对其他从属参数来满足配置约束,则软件改变了从属参数的编码器属性。

生成代码

要生成C/ c++代码,您必须访问配置正确的C/ c++编译器。MATLAB编码器定位并使用一个受支持的、安装的编译器。万博1manbetx您可以使用墨西哥人设置查看和更改默认编译器。有关详细信息,请参见改变默认的编译器

使用generateCode为此生成代码预测更新SVM回归模型的功能(Mdl)默认设置。

generateCode(配置)
GenerateCode在输出文件夹中创建这些文件:'Initialize.m','predict.m','update.m','回归vmmodel.mat'代码生成成功。

generateCode生成生成代码所需的MATLAB文件,包括两个入口点函数predict.mupdate.m为了预测更新功能Mdl, 分别。然后generateCode创建一个名为RegressionSVMModel对于两个入口点函数codegen \墨西哥人\ RegressionSVMModel文件夹并将MEX函数复制到当前文件夹。

验证生成的代码

通过一些预测数据来验证是否预测的函数Mdl预测在MEX功能函数返回相同的预计响应。要在具有多个入口点的MEX函数中调用入口点函数,请将函数名指定为第一个输入参数。

yfit =预测(MDL,X);yfit_mex = RegressionSVMModel (“预测”, X);

yfit_mex可能包括舍入差异与YFIT..在这种情况下,比较YFIT.yfit_mex,允许有一个小的公差。

查找(ABS(YFIT-YFIT_MEX)> 1E-6)
ANS =为0x1空双列向量

比较证实了YFIT.yfit_mex在公差范围内相等1E-6

培训模型和生成代码中的更新参数

使用整个数据集重新培训模型。

retrainedMdl = fitrsvm (X, Y);

通过使用提取要更新的参数validatedUpdateInputs.此功能检测到修改的模型参数retrainedMdl并验证修改后的参数值是否满足参数的编码器属性。

params = validatedUpdateInputs(配置、retrainedMdl);

更新生成代码中的参数。

回归vmmodel('更新',则params)

验证生成的代码

的输出比较预测的函数retrainedMdl预测函数。

yfit =预测(retrainedMdl X);yfit_mex = RegressionSVMModel (“预测”, X);查找(ABS(YFIT-YFIT_MEX)> 1E-6)
ANS =为0x1空双列向量

比较证实了YFIT.yfit_mex在公差范围内相等1E-6

使用部分数据集训练回归树,并为模型创建编码器配置器。使用编码器配置器的属性来指定模型参数的编码器属性。使用编码器配置器的对象函数来生成C代码,用于预测新的预测器数据的响应。然后使用整个数据集重新训练模型,并在不重新生成代码的情况下更新生成代码中的参数。

火车模型

加载CARBIG.数据集,并使用一半的观察来培训回归树模型。

加载CARBIG.X =[排量马力重量];Y = MPG;rng ('默认'重复性的%n =长度(Y);idxTrain = randsample (n, n / 2);XTrain = X (idxTrain:);YTrain = Y (idxTrain);Mdl = fitrtree (XTrain YTrain);

Mdl是A.RegressionTree对象。

创建编码器配置者

控件创建一个编码器配置器RegressionTree模型通过使用Learnercoderconfigurer.指定预测器数据XTrain.这Learnercoderconfigurer功能使用输入XTrain属性的编码器属性预测功能输入。另外,设定的输出的数目为2,使所生成的代码返回预测的预测响应和节点号码。

配置= learnerCoderConfigurer (Mdl XTrain,“NumOutputs”2);

配置程序是A.RegressionTreeCoderConfigurer对象,它是一个编码器配置器一RegressionTree对象。

指定参数的编码器属性

指定回归树模型参数的编码器属性,以便您可以在重新训练模型后更新生成代码中的参数。

属性的编码器属性X的属性配置程序这样生成的代码就可以接受任意数量的观察。修改秘诀杂色金属依赖项属性。这秘诀属性指定上限的预测数据大小,和杂色金属依赖项属性指定预测器数据的每个维度是否具有可变大小或固定大小。

configurer.x.sizevector = [INF 3];configur.x.variabledimensions.
ans =1 x2逻辑阵列1 0.

第一个维度的大小是观测的次数。的值秘诀属性来INF.导致软件修改杂色金属依赖项属性来1.换句话说,大小的上限是INF.和大小是可变的,这意味着预测数据可具有任何数量的观察。如果您在生成代码时不知道观察的数量,那么这个规范很方便。

第二个维度的大小是预测变量的数量。对于机器学习模型,这个值必须是固定的。由于预测器数据包含3个预测器,因此秘诀属性必须3.以及它的价值杂色金属依赖项属性必须0.

如果使用新的数据或不同的设置重新训练树模型,树中的节点数量可能会有所不同。因此,指定的第一个维度秘诀属性,以便更新生成的代码中的节点数量:孩子们割点CutPredictorIndex,或寡码.然后,软件会自动修改其他属性。

例如,设置第一个值秘诀属性的寡码财产INF..软件修改了秘诀杂色金属依赖项的属性孩子们割点,CutPredictorIndex匹配树中节点数量的新上限。另外,第一个值杂色金属依赖项属性寡码改变到1

configurer.NodeMean.SizeVector = [Inf文件1];
修改了Children的sizeevector属性以满足配置约束。CutPoint的SizeVector属性已被修改以满足配置约束。CutPredictorIndex的SizeVector属性已被修改以满足配置约束。已修改Children的VariableDimensions属性以满足配置约束。已修改CutPoint的VariableDimensions属性以满足配置约束。已修改CutPredictorIndex的VariableDimensions属性以满足配置约束。
configur.nodemean.variabledimensions.
ans =1 x2逻辑阵列1 0.

生成代码

要生成C/ c++代码,您必须访问配置正确的C/ c++编译器。MATLAB编码器定位并使用一个受支持的、安装的编译器。万博1manbetx您可以使用墨西哥人设置查看和更改默认编译器。有关详细信息,请参见改变默认的编译器

为此生成代码预测更新回归树模型的功能(Mdl).

generateCode(配置)
generateCode创建输出文件夹在这些文件中: 'initialize.m', 'predict.m', 'update.m', 'RegressionTreeModel.mat' 代码生成成功。

generateCode函数完成这些操作:

  • 生成MATLAB文件所需的生成代码,包括两个入口点函数predict.mupdate.m为了预测更新功能Mdl, 分别。

  • 创建一个名为RegressionTreeModel两个入口点函数。

  • 创建MEX函数的代码codegen \墨西哥人\ RegressionTreeModel文件夹。

  • 将MEX函数复制到当前文件夹。

验证生成的代码

通过一些预测数据来验证是否预测的函数Mdl预测在MEX功能函数返回相同的预计响应。要在具有多个入口点的MEX函数中调用入口点函数,请将函数名指定为第一个输入参数。

[YFIT,Node] =预测(MDL,XTrain);[yfit_mex,node_mex] = regressiontreemodel(“预测”, XTrain);

相比YfitYfit_mex节点node_mex.

MAX(ABS(Yfit-Yfit_mex),[]“所有”
ANS = 0
isequal(节点,node_mex)
ans =逻辑1

一般来说,Yfit_mex可能包括舍入差异与Yfit.在这种情况下,比较证实了YfitYfit_mex是相等的。

是平等的返回逻辑1(真正的)如果所有输入参数都是相等的。比较证实了预测的函数Mdl预测函数中返回相同的节点号。

培训模型和生成代码中的更新参数

使用整个数据集重新培训模型。

retrainedMdl = fitrtree(X,Y);

通过使用提取要更新的参数validatedUpdateInputs.此功能检测到修改的模型参数retrainedMdl并验证修改后的参数值是否满足参数的编码器属性。

params = validatedUpdateInputs(配置、retrainedMdl);

更新生成代码中的参数。

RegressionTreeModel('更新',则params)

验证生成的代码

比较来自的输出参数预测的函数retrainedMdl预测函数。

[Yfit,节点] =预测(retrainedMdl,X);[yfit_mex,node_mex] = regressiontreemodel(“预测”, X);MAX(ABS(Yfit-Yfit_mex),[]“所有”
ANS = 0
isequal(节点,node_mex)
ans =逻辑1

通过比较,确认了预测响应和节点数是相等的。

输入参数

全部折叠

机器学习模型,指定为模型对象,如所支持模型表所示。万博1manbetx

模型 模型对象
多包分类的二进制决策树 CompactClassificationTree
单级和二进制分类的SVM CompactClassificationSVM
二进制分类的线性模型 ClassificationLinear
多类模型支持向量机和线性模型 CompactClassificeCoc.
二叉决策树的回归 CompactRegressionTree
万博1manbetx支持向量机回归 CompactRegressionSVM
线性回归 RegressionLinear

有关机器学习模型的代码生成使用说明和限制,请参阅模型对象页面的代码生成部分。

参数在机器学习模型,指定为与每个参数来更新的字段的结构更新。

创建参数个数通过使用validatedUpdateInputs功能。此函数检测到Retrow Model中的修改参数,验证修改的参数值是否满足参数的编码器属性,并将参数返回为结构进行更新。

可以更新的参数集根据机器学习模型的不同而不同,如表中所述。

模型 参数更新
多包分类的二进制决策树 孩子们ClassProbability成本割点CutPredictorIndex之前
单级和二进制分类的SVM
  • 如果Mdl是一类SVM分类模型,那么参数个数不能包含成本之前

二进制分类的线性模型 β偏见成本之前
多类模型支持向量机和线性模型

BinaryLearners成本之前

二叉决策树的回归 孩子们割点CutPredictorIndex寡码
支持向量机回归
线性回归 β偏见

输出参数

全部折叠

更新的机器学习模型,作为与之相同类型的模型对象返回Mdl.输出updatedmdl.是输入的更新版本Mdl包含新参数参数个数

提示

算法

在编码器配置器工作流中,Mdl输入参数的更新是一个模特返回loadLearnerForCoder.这个模式与updatedmdl.对象是简化的分类或回归模型,主要包含预测所需的属性。

扩展能力

在R2018B中介绍