learnerCoderConfigurer

创建机器学习模型的编码器配置者

描述

训练机器学习模型后,创建一个编码器配置者通过使用模型learnerCoderConfigurer。使用对象的功能和属性的配置器的指定代码生成选项,并产生C / C ++的代码预测更新机器学习模型的功能。生成C / C ++代码需要MATLAB®编码器™

此流程图显示了使用编码器配置程序的代码生成工作流。使用learnerCoderConfigurer突出显示的步骤。

配置= learnerCoderConfigurer(MDLX返回编码器配置程序配置对于机器学习模型MDL。指定预测数据X预测功能MDL

配置= learnerCoderConfigurer(MDLX名称,值返回带有由一个或多个名称-值对参数指定的附加选项的编码器配置程序。例如,您可以在。中指定输出参数的数目预测功能,生成的C / C ++代码的文件名称,以及编码器配置器的详细级别。

例子

全部收缩

训练一个机器学习模型,然后生成代码预测更新通过使用编码器配置器实现模型的功能。

加载carsmall数据集和训练一个支持向量机(SVM)回归模金宝app型。

加载carsmallX = [马力,重量];Y = MPG;MDL = fitrsvm(X,Y);

MDLRegressionSVM宾语。

属性创建一个编码器配置程序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.mupdate.m预测更新的功能MDL, 分别。

  • 创建一个名为的MEX函数RegressionSVMModel两个入口点函数。

  • 在该MEX函数创建代码代码生成\ MEX \ RegressionSVMModel夹。

  • 该MEX功能复制到当前文件夹。

显示的内容predict.mupdate.minitialize.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));

MDLClassificationSVM宾语。

创建编码器配置

属性创建一个编码器配置程序ClassificationSVM通过使用模型learnerCoderConfigurer。指定预测数据X。该learnerCoderConfigurer功能使用输入X配置的编码器属性预测函数的输入。另外,将输出数量设置为2,以便生成的代码返回预测的标签和分数。

配置器= learnerCoderConfigurer(MDL,X(1:50,:),'NumOutputs',2);

配置ClassificationSVMCoderConfigurer对象,它是一个编码器配置器一ClassificationSVM宾语。

指定参数的编码器属性

指定支持向量机分类模型参数的编码属性,以便您可以在重新训练模型后更新生成的代码中的参数。此示例指定要传递给生成的代码的预测器数据的编码器属性和支持向量机模型的支持向量的编码器属性。金宝app

首先,指定的编码器属性X这样生成的代码接受任何数量的意见。修改SizeVectorVariableDimensions属性。该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.mupdate.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是相等的,而分数值在公差范围内相等。

输入参数

全部收缩

机器学习模型,指定为一个完整的或紧凑型对象,在此表支持的机型中给出。金宝app

模型 全/紧凑模型对象 培训功能
多类分类的二叉决策树 ClassificationTreeCompactClassificationTree fitctree
SVM一类和二元分类 ClassificationSVMCompactClassificationSVM fitcsvm
线性模型的二元分类 ClassificationLinear fitclinear
多类模型支持向量机和线性模型 ClassificationECOCCompactClassificationECOC fitcecoc
二进制决策树的回归 RegressionTreeCompactRegressionTree fitrtree
金宝app支持向量机回归 RegressionSVMCompactRegressionSVM fitrsvm
线性回归 RegressionLinear fitrlinear

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

为预测数据预测功能MDL,指定为ñ——- - - - - -p数字矩阵,其中ñ是观测值的数量和p是预测变量的数目。若要改为指定X作为一个p——- - - - - -ñ矩阵,其中的意见对应的列,您必须设置“ObservationsIn”名称 - 值对参数'列'。此选项仅适用于具有线性二进制学习者的线性模型和ECOC模型。

预测机器学习模型的预测功能分类标签和响应回归给定的预测数据。创建编码器配置者后配置,你可以用generateCode函数来生成C / C ++的代码预测功能MDL。所生成的代码接受具有相同的大小和数据类型的数据的预测X。您可以指定每个维度是否具有创建后可变大小或固定大小配置

例如,如果希望生成使用带有三个预测变量的100个观察值来预测标签的C/ c++代码,那么请指定X0 (100 3)。该learnerCoderConfigurer函数仅使用的大小和数据类型X,而不是它的值。因此,X可预测的数据或表示与特定的数据类型的设定值的MATLAB表达。输出配置存储的大小和数据类型XX财产配置。您可以修改的大小和数据类型X创建后配置。例如,更改的观察到200的数目和数据类型来

configurer.X。SizeVector= [200 3]; configurer.X.DataType =“单一”;

以允许生成的C / C ++码接受高达100个观测数据的预测,指定X0 (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 ++代码。

在输出参数号码预测机器学习模型的功能MDL,指定为逗号分隔的一对组成的'NumOutputs'一个正整数ñ

的输出预测不同型号的功能。预测在所生成的C / C ++代码返回第一ñ的输出预测按“输出”列中给出的顺序运行。

模型 预测模型的功能 输出
多类分类的二叉决策树 预测 标签(预测类标签),得分(后验概率),节点(对于预测的类节点号码),CNUM(预测标签类数)
SVM一类和二元分类 预测 标签(预测类标签),得分(分数或后验概率)
线性模型的二元分类 预测 标签(预测类标签),得分了(分类分值)
多类模型支持向量机和线性模型 预测 标签(预测类标签),NegLoss(负平均值二进制的损失),PBScore(阳性级分)
二进制决策树的回归 预测 Yfit(预测反应),节点(对于预测节点编号)
支持向量机回归 预测 yfit(预测反应)
线性回归 预测 YHat(预测反应)

例如,如果您指定“NumOutputs”, 1对于SVM分类模型,然后预测返回预测在所生成的C / C ++代码类别标签。

创建编码器配置者后配置,您可以通过使用点符号修改的输出的数量。

configurer.NumOutputs = 2;

'NumOutputs'名称 - 值对参数是等效于'-nargout'的编译器选项代码生成。此选项指定的输出参数在生成代码的入口点函数的数量。目标函数generateCode编码器的一个配置程序生成两个入口点函数predict.mupdate.m预测更新的功能MDL分别-并产生C / C ++用于两个入口点函数的代码。对于指定的值'NumOutputs'对应于输出参数的数量predict.m

例子:“NumOutputs”, 2

数据类型:|

生成的C/ c++代码的文件名,指定为逗号分隔的对组成'OutputFileName'和字符向量或标量的字符串。

目标函数generateCode编码器配置器的产生使用该文件名C / C ++代码。

文件名不能包含空格,因为它们会导致某些操作系统配置代码生成失败。此外,名称必须是一个有效的MATLAB函数名。

默认的文件名是对象名称MDL其次是'模型'。例如,如果MDLCompactClassificationSVM要么ClassificationSVM对象,则默认名称为“ClassificationSVMModel”

创建编码器配置者后配置,您可以使用点符号修改文件名。

configurer.OutputFileName =“myModel”;

例子:'OutputFileName', '基于myModel'

数据类型:字符|

详细级别,指定为逗号分隔的对组成“详细”,要么真正(逻辑1),或(逻辑0)。详细级别控制通知消息中的对编码器配置器命令行的显示配置

描述
真正(逻辑1) 软件显示通知消息当你在其他相关参数的变化而变化的参数结果的编码属性。
(逻辑0) 该软件不显示通知消息。

为了能够在生成的代码更新机器学习模型参数,您需要配置生成代码之前的参数编码器的属性。的参数编码器的属性是依赖于彼此,所以软件存储依赖关系配置约束。如果通过使用一个编码器配置器修改的参数的编码器的属性,并修改需要对其他相关的参数的后续变化,以满足配置约束,那么软件改变从属参数的编码器的属性。详细级别,判断是否对于这些随后的变化软件显示的通知消息。

创建编码器配置者后配置,可以使用点表示法修改详细级别。

configurer.Verbose = FALSE;

例子:“放牧”,假

数据类型:合乎逻辑

预测数据观测尺寸,指定为逗号分隔的一对组成的“ObservationsIn”,要么“行”要么'列'。如果你设置“ObservationsIn”'列',然后是预测数据X必须如此定向使得观测对应列。

注意

'列'选项只对线性模型和ECOC模型与线性二进制学习者使用。

例子:'ObservationsIn', '列'

输出参数

全部收缩

机器学习模型的编码器配置程序,作为此表中的编码器配置程序对象之一返回。

模型 编码器配置者对象
多类分类的二叉决策树 ClassificationTreeCoderConfigurer
SVM一类和二元分类 ClassificationSVMCoderConfigurer
线性模型的二元分类 ClassificationLinearCoderConfigurer
多类模型支持向量机和线性模型 ClassificationECOCCoderConfigurer
二进制决策树的回归 RegressionTreeCoderConfigurer
金宝app支持向量机回归 RegressionSVMCoderConfigurer
线性回归 RegressionLinearCoderConfigurer

使用编码器配置器对象的对象的功能和属性来配置代码生成选项,并产生用于C / C ++代码预测更新机器学习模型的功能。

介绍了在R2018b