使用SVM二进制学习者列出错误校正输出代码(ECOC)模型,并为模型创建一个编码器配置器。使用编码器配置器的属性来指定Ecoc模型参数的编码器属性。使用编码器配置器的对象函数来生成C代码,该C代码预测新的预测器数据的标签。然后使用不同的设置重新培训模型,并在未生成代码中更新参数而无需重新生成代码。
火车模型
装载Fisher的Iris数据集。
创建SVM二进制学习者模板以使用高斯内核功能并标准化预测器数据。
使用模板训练多牌ecoc模型T.
。
MDL.
是A.Classifiedecoc.
目的。
创建编码器配置程序
为此创建一个编码器配置程序Classifiedecoc.
模型通过使用Learnercoderconfigurer
。指定预测器数据X
。这Learnercoderconfigurer
功能使用输入X
配置编码器属性预测
功能输入。此外,将输出的数量设置为2,以便生成的代码返回第一个输出预测
功能,是预测标签和否定平均二进制损失。
configurer = ClassificationCocoderConfigurer具有属性:更新输入:BinaryLearners:[1x1 ClassificationsVmcoderConfigurer]之前:[1x1 LearnercoderInput]成本:[1x1 LearnercoderInput]预测输入:X:[1x1 LearnerCoderInput]代码生成参数:NumOutputs:2 OutputFileName:'ClassificationCocModel'属性,方法
配置程序
是A.classificationcoccoderconfigurer
对象是一个编码器配置程序Classifiedecoc.
目的。显示屏显示可调谐输入参数预测
和更新
:X
那二进制书
那事先的
, 和成本
。
指定参数的编码器属性
指定编码器属性预测
参数(预测数据和名称值对参数'解码'
和'二元乐'
) 和更新
参数(SVM学习者的支金宝app持向量)以便您可以将这些参数用作输入参数预测
和更新
在生成的代码中。
首先,指定编码器属性X
因此,生成的代码接受任何数量的观察。修改秘诀
和杂色金属依赖项
属性。这秘诀
属性指定预测器数据大小的上限,以及杂色金属依赖项
属性指定预测器数据的每个维度是否具有可变大小或固定大小。
第一维度的大小是观察的数量。在这种情况下,代码指定大小的上限是INF.
大小是可变的,这意味着X
可以有任何数量的观察结果。如果您不知道生成代码时的观察次数,则此规范很方便。
第二维度的大小是预测变量的数量。必须为机器学习模型固定此值。X
包含4个预测因子,所以第二个值秘诀
属性必须为4和第二个值杂色金属依赖项
属性必须是错误的
。
接下来,修改编码器属性二进制数
和解码
用来'二元乐'
和'解码'
名称 - 值对生成的代码中的参数。显示编码器属性二进制数
。
ANS = eNumerateDupput使用属性:value:'铰链'selectionOption:'内置'构建选项:{1x7 Cell} iSononstant:1可调性:0
要在生成的代码中使用非默认值,必须在生成代码之前指定值。指定价值
属性二进制数
作为'指数'
。
ANS = eNumerateDupput使用属性:value:'指数'选择选项:'内置'构建选项:{1x7 Cell} IsConstant:1可调性:1
如果您在何时修改属性值可调性
是错误的
(逻辑0),软件设置可调性
到真的
(逻辑1)。
显示编码器属性解码
。
ANS = eNumerateDupput使用属性:value:'lockweighted'selectionOption:'内置'内置选项:{'lockweighted'的“丢失”} iSononstant:1可调性:0
指定iSononstant.
属性解码
作为错误的
这样您就可以使用所有可用值内置选项
在生成的代码中。
ANS = eNumerateDupput使用属性:value:[1x1 LearnerCoderInput] SelectedOption:'不可置位'内置选项:{'lockwuighted''丢失备用'} iSononstant:0可调性:1
软件改变了价值
属性解码
到A.LearnercoderInpul.
对象使您可以使用两者“失去重量”
和'失去了
'作为价值'解码'
。此外,软件设置了选择选项
到'不合作'
和可调性
到真的
。
最后,修改编码器属性金宝app支持监视器
在二进制书
。显示编码器属性金宝app支持监视器
。
ANS = LearnerCoderInput具有属性:Sizevector:[54 4] variabledimensions:[1 0]数据类型:'Double'可调性:1
默认值杂色金属依赖项
是[真假]
因为每个学习者都有不同数量的支持向量。金宝app如果使用新数据或不同的设置重新恢复ECOC型号,则SVM学习者中的支持向量的数量可能会有所不同。金宝app因此,增加支撑载体数量的上限。金宝app
alpha的Sizevector属性已被修改为满足配置约束。SizeVector属性for SupportVe金宝appctorLabels已被修改为满足配置约束。
如果修改编码器属性金宝app支持监视器
,然后软件修改了编码器属性Α
和金宝appSupportVectorLabels.
满足配置约束。如果一个参数的编码器属性的修改需要随后的改变对其他从属参数来满足配置约束,则软件改变了从属参数的编码器属性。
显示编码器配置器。
configurer = ClassificationCocoderConfigurer具有属性:更新输入:BinaryLearners:[1x1 scresisificsvmcoderConfigurer]之前:[1x1 LearnercoderInput]预测输入:x:[1x1 inumerateDute] Binaryloss:[1x1 enumerateInput]解码:[1x1 enumerateInput]代码生成参数:NUMOUTPUTS:2 OUTPUTFILENAME:'ClassificationCocModel'属性,方法
现在显示器包括二进制数
和解码
也是。
生成代码
要生成C / C ++代码,您必须访问正确配置的C / C ++编译器。MATLAB编码器定位并使用支持的安装编译器。金宝app您可以使用梅克斯
-设置
查看和更改默认编译器。有关更多详细信息,请参阅更改默认编译器。
为此生成代码预测
和更新
ECOC分类模型的功能(MDL.
)。
GenerateCode在输出文件夹中创建这些文件:'Initialize.m','predict.m','update.m'u','classificationcocmodel.mat'代码生成成功。
这Generatecode.
函数完成这些操作:
生成生成代码所需的MATLAB文件,包括两个入口点函数预测.M.
和更新..
为了预测
和更新
函数MDL.
, 分别。
创建名为MEX函数classificationcocmodel.
对于两个入口点函数。
创建MEX函数的代码Codegen \ Mex \ ClassificationCocmodel
文件夹。
将MEX函数复制到当前文件夹。
验证生成的代码
通过一些预测数据来验证是否是预测
功能MDL.
和预测
MEX函数中的函数返回相同的标签。要在具有多个入口点的MEX函数中调用一个入门点函数,请将函数名称指定为第一个输入参数。因为你指定了'解码'
作为调谐输入参数来改变iSononstant.
在生成代码之前的属性,您还需要在对MEX函数的调用中指定它,即使“失去重量”
是默认值'解码'
。
相比标签
到label_mex.
通过使用是平等的
。
是平等的
返回逻辑1(真的
)如果所有输入相等。比较证实了预测
功能MDL.
和预测
MEX函数中的函数返回相同的标签。
opoloss_mex.
可能包括与之相比的圆截止差异negl
。在这种情况下,比较opoloss_mex.
到negl
,允许小容差。
比较证实了negl
和opoloss_mex.
在宽容范围内相同1E-8
。
培训模型和生成代码中的更新参数
使用不同的设置重新培训模型。指定'kernelscale'
作为'汽车'
这样,软件使用启发式程序选择适当的比例因子。
通过使用提取要更新的参数验证updateInpuls.
。此功能检测到修改的模型参数returatedmdl.
并验证修改的参数值是否满足参数的编码器属性。
更新生成的代码中的参数。
验证生成的代码
比较来自的输出预测
功能returatedmdl.
到了输出预测
在更新的MEX函数中的功能。
比较证实了标签
和label_mex.
是平等的negl
和opoloss_mex.
在宽容范围内相同。