RegressionTreeCoderConfigurer
编码器配置二元决策树模型的回归
描述
一个RegressionTreeCoderConfigurer
对象是一个编码器配置二叉决策树模型的回归(RegressionTree
或CompactRegressionTree
)。
一个编码器配置提供了方便的功能配置代码生成选项,生成C / c++代码,生成的代码和更新模型参数。
配置代码生成选项并指定编码属性树模型参数通过使用对象属性。
生成的C / c++代码
预测
和更新
函数回归树模型的使用generateCode
。需要生成C / c++代码MATLAB®编码器™。更新模型参数生成的C / c++代码,而不必重新生成代码。这个特性可以减少所需的努力再生,重新部署,reverify C / c++代码当你训练树模型与新数据或设置。在更新模型参数,使用
validatedUpdateInputs
验证和提取模型参数更新。
这个流程图显示了代码生成使用编码器配置工作流。
对于代码生成使用笔记和回归树模型的局限性,看到的代码生成部分CompactRegressionTree
,预测
,更新
。
创建
通过训练后回归树模型fitrtree
为模型,创建一个编码器配置使用learnerCoderConfigurer
。使用一个编码器的属性配置指定的编码属性预测
和更新
参数。然后,用generateCode
生成C / c++代码根据指定的编码属性。
属性
预测
参数
在这一节中列出的属性指定的编码属性预测
函数参数的生成的代码。
X
- - - - - -编码器的属性预测数据
LearnerCoderInput
对象
编码器的属性预测数据传递给C / c++代码生成预测
回归树模型的函数,指定为一个LearnerCoderInput
对象。
当您创建一个编码器配置使用learnerCoderConfigurer
函数的输入参数X
确定的默认值LearnerCoderInput
编码器属性:
SizeVector
——默认值是数组大小的输入X
。VariableDimensions
这个值是[0 0]
(默认)或[1 0]
。[0 0]
表明中指定数组大小是固定的SizeVector
。[1 0]
表明,有适应行和固定大小列数组。在这种情况下,第一个值SizeVector
的上界的行数,第二个值吗SizeVector
列的数量。
数据类型
这个值是单
或双
。默认数据类型取决于输入的数据类型X
。可调谐性
——这个值必须真正的
,这意味着预测
在生成的C / c++代码总是包括预测数据作为输入。
您可以修改使用点符号的编码属性。例如,生成C / c++代码接受预测数据与100年的观察三个预测变量,指定这些编码器的属性X
编码器的配置配置
:
configurer.X。SizeVector= [100 3]; configurer.X.DataType =“双”;configurer.X.VariableDimensions= [0 0];
[0 0]
表明第一和第二维度X
(数量的观察和数量的预测变量,分别)具有固定的大小。
允许生成的C / c++代码接受预测数据与100观察,指定这些编码器的属性X
:
configurer.X。SizeVector= [100 3]; configurer.X.DataType =“双”;configurer.X.VariableDimensions= [1 0];
[1 0]
表明,第一个维度X
(观察)有一个变量的大小和第二维度X
(数量的预测变量)具有固定的大小。100年指定数量的观察,在这个例子中,成为了最大允许的观察生成的C / c++代码。允许任意数量的观察,指定绑定正
。
NumOutputs
- - - - - -的输出数预测
1(默认)|2
的输出参数返回生成的C / c++代码预测
回归树模型的函数,指定为1或2。
的输出参数预测
是Yfit
(预测反应)和节点
(节点编号为预测),在秩序。预测
在生成的C / c++代码返回第一个n
输出的预测
函数,n
是NumOutputs
价值。
在创建了编码器配置配置
,您可以指定输出通过使用点符号的数量。
配置。NumOutputs= 2;
的NumOutputs
属性是相当于“-nargout”
编译器选项的codegen
(MATLAB编码器)。这个选项指定的输出参数的入口点函数,代码生成。的目标函数generateCode
生成两个入口点函数predict.m
和update.m
为预测
和更新
提供的奖学金函数回归树模型,生成C / c++代码的两个入口点函数。指定的值NumOutputs
属性对应的入口点函数的输出参数predict.m
。
数据类型:双
更新
参数
在这一节中列出的属性指定的编码属性更新
函数参数的生成的代码。的更新
函数接受一个训练模型和新模型参数作为输入参数,并返回一个更新版本的模型,包含了新的参数。使更新参数在生成的代码中,您需要指定在生成代码的编码属性参数。使用一个LearnerCoderInput
对象指定每个参数的编码属性。默认的属性值是基于模型参数的输入参数Mdl
的learnerCoderConfigurer
。
孩子们
- - - - - -编码器为每个节点的子节点的属性
LearnerCoderInput
对象
编码器的属性树中的每个节点的子节点(孩子们
回归树模型),指定为一个LearnerCoderInput
对象。
默认的属性值LearnerCoderInput
对象是基于输入参数Mdl
的learnerCoderConfigurer
:
SizeVector
——默认值是(2 nd)
,在那里nd
节点的数量在吗Mdl
。VariableDimensions
这个值是[0 0]
(默认)或[1 0]
。[0 0]
表明中指定数组大小是固定的SizeVector
。[1 0]
表明,有适应行和固定大小列数组。在这种情况下,第一个值SizeVector
的上界的行数,第二个值吗SizeVector
列的数量。
数据类型
这个值是“单一”
或“双”
。默认数据类型是一致的数据类型使用训练数据训练Mdl
。可调谐性
——这个值必须真正的
。
如果你修改的第一个维度SizeVector
是newnd
,那么软件修改的第一个维度SizeVector
属性newnd
的属性割点
,CutPredictorIndex
,NodeMean
。类似地,如果您修改的第一个维度VariableDimensions
是1
,那么软件修改的第一个维度VariableDimensions
属性1
这些属性。
割点
- - - - - -编码器切割点为每个节点的属性
LearnerCoderInput
对象
编码器的属性树中的每个节点(减少点割点
回归树模型),指定为一个LearnerCoderInput
对象。
默认的属性值LearnerCoderInput
对象是基于输入参数Mdl
的learnerCoderConfigurer
:
SizeVector
——默认值是(nd - 1)
,在那里nd
节点的数量在吗Mdl
。VariableDimensions
这个值是[0 0]
(默认)或[1 0]
。[0 0]
表明中指定数组大小是固定的SizeVector
。[1 0]
表明,有适应行和固定大小列数组。在这种情况下,第一个值SizeVector
的上界的行数,第二个值吗SizeVector
列的数量。
数据类型
这个值是“单一”
或“双”
。默认数据类型是一致的数据类型使用训练数据训练Mdl
。可调谐性
——这个值必须真正的
。
如果你修改的第一个维度SizeVector
是newnd
,那么软件修改的第一个维度SizeVector
属性newnd
的属性孩子们
,CutPredictorIndex
,NodeMean
。类似地,如果您修改的第一个维度VariableDimensions
是1
,那么软件修改的第一个维度VariableDimensions
属性1
这些属性。
CutPredictorIndex
- - - - - -编码器削减预测指数为每个节点的属性
LearnerCoderInput
对象
编码器将预测的属性索引树中的每个节点(CutPredictorIndex
回归树模型),指定为一个LearnerCoderInput
对象。
默认的属性值LearnerCoderInput
对象是基于输入参数Mdl
的learnerCoderConfigurer
:
SizeVector
——默认值是(nd - 1)
,在那里nd
节点的数量在吗Mdl
。VariableDimensions
这个值是[0 0]
(默认)或[1 0]
。[0 0]
表明中指定数组大小是固定的SizeVector
。[1 0]
表明,有适应行和固定大小列数组。在这种情况下,第一个值SizeVector
的上界的行数,第二个值吗SizeVector
列的数量。
数据类型
这个值是“单一”
或“双”
。默认数据类型是一致的数据类型使用训练数据训练Mdl
。可调谐性
——这个值必须真正的
。
如果你修改的第一个维度SizeVector
是newnd
,那么软件修改的第一个维度SizeVector
属性newnd
的属性孩子们
,割点
,NodeMean
。类似地,如果您修改的第一个维度VariableDimensions
是1
,那么软件修改的第一个维度VariableDimensions
属性1
这些属性。
NodeMean
- - - - - -编码器平均响应值为每个节点的属性
LearnerCoderInput
对象
编码器的属性树中的每个节点的平均响应值(NodeMean
回归树模型),指定为一个LearnerCoderInput
对象。
默认的属性值LearnerCoderInput
对象是基于输入参数Mdl
的learnerCoderConfigurer
:
SizeVector
——默认值是(nd - 1)
,在那里nd
节点的数量在吗Mdl
。VariableDimensions
这个值是[0 0]
(默认)或[1 0]
。[0 0]
表明中指定数组大小是固定的SizeVector
。[1 0]
表明,有适应行和固定大小列数组。在这种情况下,第一个值SizeVector
的上界的行数,第二个值吗SizeVector
列的数量。
数据类型
这个值是“单一”
或“双”
。默认数据类型是一致的数据类型使用训练数据训练Mdl
。可调谐性
——这个值必须真正的
。
如果你修改的第一个维度SizeVector
是newnd
,那么软件修改的第一个维度SizeVector
属性newnd
的属性孩子们
,割点
,CutPredictorIndex
。类似地,如果您修改的第一个维度VariableDimensions
是1
,那么软件修改的第一个维度VariableDimensions
属性1
这些属性。
其他配置选项
OutputFileName
- - - - - -文件名生成的C / c++代码
“RegressionTreeModel”
(默认)|特征向量
文件名生成的C / c++代码,指定为一个特征向量。
的目标函数generateCode
的RegressionTreeCoderConfigurer
生成C / c++代码使用这个文件名称。
文件名称不能包含空格,因为他们可能会导致在某些操作系统配置代码生成失败。此外,名称必须是一个有效的MATLAB函数名。
在创建了编码器配置配置
,您可以指定文件名使用点符号。
配置。OutputFileName =“myModel”;
数据类型:字符
详细的
- - - - - -冗长的水平
真正的
(逻辑1)(默认)|假
(逻辑0)
冗长的水平,指定为真正的
(逻辑1)或假
(逻辑0)冗长级别控制通知消息的显示在命令行。
价值 | 描述 |
---|---|
真正的 (逻辑1) |
软件显示通知消息当你更改编码器的属性参数导致其他相关参数的变化。 |
假 (逻辑0) |
软件不显示通知消息。 |
使更新机器学习模型参数在生成的代码中,您需要配置在生成代码的编码属性参数。参数的编码属性相互依赖,所以软件商店依赖配置约束。如果你修改一个参数的编码属性使用编码器配置,和修改需要对其他相关参数,以满足后续更改配置约束,那么软件更改的编码属性相关的参数。冗长的水平决定是否为这些后续更改软件显示通知消息。
在创建了编码器配置配置
,您可以修改使用点符号的冗长的水平。
配置。详细的= false;
数据类型:逻辑
代码生成定制的选项
使用自定义代码生成工作流generateFiles
函数和下面的三个属性codegen
(MATLAB编码器),而不是使用generateCode
函数。
生成两个入口点函数文件后(predict.m
和update.m
)通过使用generateFiles
功能,您可以修改这些文件根据你的代码生成工作流。例如,您可以修改predict.m
文件包括数据预处理,或者您可以将这些入口点函数添加到另一个代码生成项目。然后,您可以通过使用生成C / c++代码codegen
(MATLAB编码器)函数和codegen
参数适用于修改后的入口点函数或代码生成项目。使用在这一节中描述的三个属性作为起点设置codegen
参数。
CodeGenerationArguments
- - - - - -codegen
参数
单元阵列
这个属性是只读的。
codegen
(MATLAB编码器)参数,指定为一个单元阵列。
这个属性使您能够定制代码生成工作流。使用generateCode
函数如果你不需要自定义工作流。
而不是使用generateCode
编码器的配置配置
,您可以生成C / c++代码如下:
generateFiles cgArgs = configurer.CodeGenerationArguments(配置);codegen (cgArgs {}):
cgArgs
因此之前调用codegen
。
如果你修改的其他属性配置
,软件更新CodeGenerationArguments
相应的属性。
数据类型:细胞
PredictInputs
- - - - - -输入参数的预测
单元阵列的coder.PrimitiveType
对象
这个属性是只读的。
入口点函数的输入参数predict.m
对于代码生成,指定的单元阵列coder.PrimitiveType
(MATLAB编码器)对象。的coder.PrimitiveType
预测的对象包括编码器属性中存储的数据X
财产。
如果你修改的编码属性预测数据,然后软件更新coder.PrimitiveType
相应的对象。
的coder.PrimitiveType
对象PredictInputs
相当于configurer.CodeGenerationArguments {6}
编码器的配置配置
。
数据类型:细胞
UpdateInputs
- - - - - -可调的输入参数列表更新
包括单元阵列的结构coder.PrimitiveType
对象
这个属性是只读的。
列表的入口点函数的可调输入参数update.m
对于代码生成,包括指定的单元阵列结构coder.PrimitiveType
(MATLAB编码器)对象。每一个coder.PrimitiveType
对象包括编码器属性可调机器学习模型的参数。
如果你修改模型参数的编码属性使用编码器配置属性(更新
参数属性),那么相应的软件更新coder.PrimitiveType
相应的对象。如果你指定可调谐性
机器学习模型参数的属性假
,然后删除相应的软件coder.PrimitiveType
对象的UpdateInputs
列表。
的结构UpdateInputs
相当于configurer.CodeGenerationArguments {3}
编码器的配置配置
。
数据类型:细胞
对象的功能
generateCode |
生成C / c++代码使用编码器配置 |
generateFiles |
生成MATLAB使用编码器配置文件代码生成 |
validatedUpdateInputs |
验证和提取机器学习模型参数更新 |
例子
使用编码器配置生成代码
火车一个机器学习模型,然后生成代码预测
和更新
功能模型的使用编码器配置。
加载carbig
数据集,其中包含汽车数据和训练回归树模型。
负载carbigX =(位移马力重量);Y = MPG;Mdl = fitrtree (X, Y);
Mdl
是一个RegressionTree
对象。
创建一个编码器的配置RegressionTree
模型通过使用learnerCoderConfigurer
。指定的预测数据X
。的learnerCoderConfigurer
函数使用的输入X
配置的编码属性预测
函数的输入。
X配置= learnerCoderConfigurer (Mdl)
配置属性= RegressionTreeCoderConfigurer:更新输入:孩子们:[1 x1 LearnerCoderInput] NodeMean: [1 x1 LearnerCoderInput]割点:[1 x1 LearnerCoderInput] CutPredictorIndex: [1 x1 LearnerCoderInput]预测输入:X: [1 x1 LearnerCoderInput]代码生成参数:NumOutputs: 1 OutputFileName:“RegressionTreeModel”属性,方法
配置
是一个RegressionTreeCoderConfigurer
对象,该对象是一个编码器的配置RegressionTree
对象。
生成C / c++代码,您必须访问一个C / c++编译器配置正确。MATLAB编码器定位和使用支持,安装编译器。金宝app您可以使用墨西哥人
设置
查看和更改默认编译器。更多细节,请参阅改变默认的编译器。
生成的代码预测
和更新
回归树模型的功能(Mdl
用默认设置)。
generateCode(配置)
generateCode输出文件夹中创建这些文件:初始化。米”、“预测。米”、“更新。米”、“RegressionTreeModel。垫的代码生成成功。
的generateCode
函数完成这些操作:
生成所需的MATLAB文件生成代码,包括两个入口点函数
predict.m
和update.m
为预测
和更新
的功能Mdl
,分别。创建一个墨西哥人函数命名
RegressionTreeModel
两个入口点函数。创建中的墨西哥人功能的代码
codegen \墨西哥人\ RegressionTreeModel
文件夹中。墨西哥人功能复制到当前文件夹。
显示的内容predict.m
,update.m
,initialize.m
文件使用类型
函数。
类型predict.m
变长度输入宗量函数varargout =预测(X) % # codegen %自动生成通过MATLAB, 26 - 2月- 2022 15:32:55 [varargout {1: nargout}] =初始化(“预测”,X,变长度输入宗量{:});结束
类型update.m
函数更新(变长度输入宗量)% # codegen %自动生成通过MATLAB, 26 - 2月- 2022 15:32:55初始化(“更新”,变长度输入宗量{:});结束
类型initialize.m
函数[varargout] =初始化(指挥、变长度输入宗量)% # codegen %自动生成通过MATLAB, 26 - 2月- 2022 15:32:55 coder.inline(“总是”)持久模型如果isempty(模型)模型= loadLearnerForCoder (“RegressionTreeModel.mat”);终端开关(命令)案例'更新' %更新结构体字段:孩子% NodeMean %割点% CutPredictorIndex模型=更新(模型、变长度输入宗量{:});例“预测”%预测输入:X X =变长度输入宗量{1};如果输入参数个数= = 2 (varargout {1: nargout}] =预测(模型中,X);其他PVPairs =细胞(1、nargin-2);i = 1: nargin-2 PVPairs{1,} =变长度输入宗量{i + 1};结束(varargout {1: nargout}] =预测(模型、X PVPairs {:});结束结束结束
更新参数的回归树模型生成的代码
火车回归树使用部分数据集和创建一个编码器的配置模型。使用编码器配置的属性来指定编码器模型参数的属性。使用编码器配置的目标函数来生成C代码,为新的预测数据预测的反应。使用整个数据集,然后再培训模型和更新参数生成的代码没有重新生成代码。
火车模型
加载carbig
数据集,训练回归树模型使用一半的观察。
负载carbigX =(位移马力重量);Y = MPG;rng (“默认”)%的再现性n =长度(Y);idxTrain = randsample (n, n / 2);XTrain = X (idxTrain:);YTrain = Y (idxTrain);Mdl = fitrtree (XTrain YTrain);
Mdl
是一个RegressionTree
对象。
创建编码器配置
创建一个编码器的配置RegressionTree
模型通过使用learnerCoderConfigurer
。指定的预测数据XTrain
。的learnerCoderConfigurer
函数使用的输入XTrain
配置的编码属性预测
函数的输入。同时,设置输出的数量2,这样生成的代码返回预测反应和节点数量预测。
配置= learnerCoderConfigurer (Mdl XTrain,“NumOutputs”2);
配置
是一个RegressionTreeCoderConfigurer
对象,该对象是一个编码器的配置RegressionTree
对象。
指定编码的属性参数
指定的编码属性回归树模型参数,这样您就可以更新参数模型在培训后生成的代码。
指定的编码属性X
的属性配置
这样生成的代码接受任何数量的观察。修改SizeVector
和VariableDimensions
属性。的SizeVector
属性指定的上界预测数据大小,和VariableDimensions
属性指定每个维度的预测数据是否有一个变量大小或固定大小。
configurer.X。SizeVector= [Inf 3]; configurer.X.VariableDimensions
ans =1 x2逻辑阵列1 0
第一个维度的大小是观测的数量。设置的值SizeVector
属性来正
导致软件更改的值VariableDimensions
属性来1
。换句话说,大小的上限正
和大小是可变的,这意味着可以拥有任意数量的观察的预测数据。这个规范是方便如果你不知道观察当生成代码的数量。
第二个维度是大小的预测变量的数量。这个值必须为一个固定的机器学习模型。因为预测数据包含3预测的价值SizeVector
属性必须3
和的值VariableDimensions
属性必须0
。
如果你再培训使用新数据树模型或不同的设置,在树中节点的数目可以有所不同。因此,指定的第一个维度SizeVector
这些属性的属性,这样您就可以更新的节点生成的代码:孩子们
,割点
,CutPredictorIndex
,或NodeMean
。然后软件自动修改其他属性。
例如,设置的第一个值SizeVector
的属性NodeMean
财产正
。软件修改SizeVector
和VariableDimensions
的属性孩子们
,割点
,CutPredictorIndex
为了配合新的上限在树上的节点数量。此外,的第一个值VariableDimensions
的属性NodeMean
更改1
。
configurer.NodeMean。SizeVector= [Inf 1];
儿童SizeVector属性被修改以满足配置约束。SizeVector属性为割点已被修改,以满足配置约束。SizeVector属性CutPredictorIndex已被修改,以满足配置约束。儿童VariableDimensions属性被修改以满足配置约束。VariableDimensions属性为割点已被修改,以满足配置约束。VariableDimensions属性CutPredictorIndex已被修改,以满足配置约束。
configurer.NodeMean.VariableDimensions
ans =1 x2逻辑阵列1 0
生成代码
生成C / c++代码,您必须访问一个C / c++编译器配置正确。MATLAB编码器定位和使用支持,安装编译器。金宝app您可以使用墨西哥人
设置
查看和更改默认编译器。更多细节,请参阅改变默认的编译器。
生成的代码预测
和更新
回归树模型的功能(Mdl
)。
generateCode(配置)
generateCode输出文件夹中创建这些文件:初始化。米”、“预测。米”、“更新。米”、“RegressionTreeModel。垫的代码生成成功。
的generateCode
函数完成这些操作:
生成所需的MATLAB文件生成代码,包括两个入口点函数
predict.m
和update.m
为预测
和更新
的功能Mdl
,分别。创建一个墨西哥人函数命名
RegressionTreeModel
两个入口点函数。创建中的墨西哥人功能的代码
codegen \墨西哥人\ RegressionTreeModel
文件夹中。墨西哥人功能复制到当前文件夹。
验证生成的代码
一些预测数据来验证是否通过预测
的函数Mdl
和预测
墨西哥人的函数返回相同的预测反应。在墨西哥人叫一个入口点函数有多个入口点函数,函数名指定为第一个输入参数。
[Yfit、节点]=预测(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 = fitrtree (X, Y);
提取参数更新使用validatedUpdateInputs
。这个函数修正模型参数的检测retrainedMdl
并验证修改后的参数值是否满足编码器的属性参数。
params = validatedUpdateInputs(配置、retrainedMdl);
在生成的代码更新参数。
RegressionTreeModel (“更新”params)
验证生成的代码
比较的输出参数预测
的函数retrainedMdl
和预测
功能更新的墨西哥人的功能。
[Yfit、节点]=预测(retrainedMdl X);[Yfit_mex, node_mex] = RegressionTreeModel (“预测”,X);马克斯(abs (Yfit-Yfit_mex), [],“所有”)
ans = 0
node_mex isequal(节点)
ans =逻辑1
比较证实了预测反应和节点数量是相等的。
更多关于
LearnerCoderInput
对象
一个编码器配置使用LearnerCoderInput
对象指定的编码属性预测
和更新
输入参数。
一个LearnerCoderInput
对象具有以下属性来指定属性的输入参数数组生成的代码。
属性名称 | 描述 |
---|---|
SizeVector |
如果相应的数组的大小 如果相应的数组大小的上限 |
VariableDimensions |
指示指定数组的每个维度是否有一个变量大小或固定大小,指定为
|
数据类型 |
数据类型的数组 |
可调谐性 |
指定是否指标 如果你指定其他属性值 |
创建一个编码器配置之后,您可以通过使用点符号修改编码器属性。例如,指定的编码属性割点
财产的编码器配置配置
:
configurer.CutPoint。SizeVector= [40 1]; configurer.CutPoint.VariableDimensions = [1 0];
详细的
),真正的
(默认),则软件显示通知消息当你修改编码器机器学习模型的属性参数和修改其他相关参数的编码属性变化。
版本历史
Beispiel offnen
您有一张这本Beispiels geanderte版本。您这本Beispiel麻省理工学院古老Anderungen offnen吗?
MATLAB-Befehl
您有窗户的链接geklickt,汪汪汪der diesem MATLAB-Befehl entspricht:
在das MATLAB-Befehlsfenster Fuhren您窝Befehl军队Eingabe来自。浏览器unterstutzen MATLAB-Befehle。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。