预测
使用分类树预测标签
描述
输入参数
Mdl
- - - - - -训练有素的分类树
ClassificationTree
模型对象|CompactClassificationTree
模型对象
训练过的分类树,指定为ClassificationTree
或CompactClassificationTree
模型对象。也就是说,Mdl
是否返回经过训练的分类模型fitctree
或紧凑的
.
X
- - - - - -预测数据需分类
数字矩阵|表格
要分类的预测数据,指定为数字矩阵或表格。
每一行的X
对应一个观察结果,每一列对应一个变量。
对于数字矩阵:
组成列的变量
X
必须与训练的预测变量的顺序相同Mdl
.如果你训练
Mdl
使用一个表(例如,资源描述
),然后X
可以是一个数值矩阵如果资源描述
包含所有数字预测变量。处理数字预测资源描述
作为训练期间的类别,识别类别预测器使用CategoricalPredictors
的名值对参数fitctree
.如果资源描述
包含异构预测器变量(例如,数值和类别数据类型)和X
是一个数字矩阵吗预测
抛出一个错误。
一个表:
预测
除了字符向量的单元格数组外,不支持多列变量或单元格数组。如果你训练
Mdl
使用一个表(例如,资源描述
),则所有预测变量均为X
必须具有与受训对象相同的变量名和数据类型Mdl
(存储在Mdl。PredictorNames
).的列顺序X
是否需要对应列的顺序资源描述
.资源描述
而且X
可以包含额外的变量(响应变量、观察权重等),但是预测
忽略了它们。如果你训练
Mdl
使用一个数字矩阵,然后预测器名称在Mdl。PredictorNames
和对应的预测变量名X
一定是一样的。若要在训练期间指定预测器名称,请参阅PredictorNames
的名值对参数fitctree
.的所有预测变量X
必须是数字向量。X
可以包含额外的变量(响应变量、观察权重等),但是预测
忽略了它们。
数据类型:表格
|双
|单
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
子树
- - - - - -修剪水平
0(默认)|非负整数的向量|“所有”
修剪级别,指定为逗号分隔的对,由“子树”
和一个由非负整数按升序或“所有”
.
如果指定了一个向量,那么所有元素必须是至少的0
在大多数马克斯(Mdl.PruneList)
.0
指示未修剪的完整树和马克斯(Mdl.PruneList)
表示完全修剪的树(即仅根节点)。
如果您指定“所有”
,然后预测
操作所有子树(即整个修剪序列)。这个规范相当于使用0:马克斯(Mdl.PruneList)
.
预测
李子Mdl
中所示的每一级子树
,然后估计相应的输出参数。的大小子树
确定一些输出参数的大小。
调用子树
,属性PruneList
而且PruneAlpha
的Mdl
必须非空的。换句话说,就是成长Mdl
通过设置“删除”,“上”
,或通过修剪Mdl
使用修剪
.
例子:“子树”,“所有”
数据类型:单
|双
|字符
|字符串
输出参数
例子
使用分类树预测标签
检查未经过训练的数据集中的几行预测。
载入费雪的虹膜数据集。
负载fisheriris
将数据划分为训练集(50%)和验证集(50%)。
1) n =大小(量;rng (1)%的再现性idxTrn = false (n, 1);idxTrn (randsample (n,圆(0.5 * n))) = true;训练集逻辑索引idxVal = idxTrn == false;验证集逻辑索引
使用训练集生长一个分类树。
Mdl = fitctree(量(idxTrn:),物种(idxTrn));
预测验证数据的标签。计算错误分类的观察数。
标签=预测(Mdl量(idxVal:));标签(randsample(元素个数(标签),5))显示几个预测标签
ans =5 x1细胞{' setosa}{‘setosa}{‘setosa}{‘virginica}{“癣”}
numMisclass =总和(~ strcmp(标签,物种(idxVal)))
numMisclass = 3
该软件对三个样本外的观察结果进行了错误分类。
用分类树估计类的后验概率
载入费雪的虹膜数据集。
负载fisheriris
将数据划分为训练集(50%)和验证集(50%)。
1) n =大小(量;rng (1)%的再现性idxTrn = false (n, 1);idxTrn (randsample (n,圆(0.5 * n))) = true;训练集逻辑索引idxVal = idxTrn == false;验证集逻辑索引
使用训练集生成一个分类树,然后查看它。
Mdl = fitctree(量(idxTrn:),物种(idxTrn));视图(Mdl,“模式”,“图”)
生成的树有四个层次。
使用修剪到级别1和3的子树估计测试集的后验概率。
[~,后]=预测(Mdl量(idxVal:)“子树”3 [1]);Mdl。ClassNames
ans =3 x1细胞{'setosa'} {'versicolor'} {'virginica'}
后(randsample(大小(后,1),5),:,:),...显示几个后验概率
Ans = Ans (:,:,1) = 1.0000 00 1.0000 00 1.0000 0000 1.0000 0 0.8571 0.1429 Ans (:,:,2) = 0.3733 0.3200 0.3067 0.3067 0.3733 0.3200 0.3067 0.3733 0.3200 0.3067 0.3067 0.3733 0.3200 0.3067 0.3067 0.3733 0.3200 0.3067
的元素后
为类后验概率:
行对应于验证集中的观察值。
列对应于中列出的类
Mdl。ClassNames
.页面对应子树。
修剪到第1级的子树比修剪到第3级的子树(即根节点)更确定其预测。
更多关于
预测类标签
预测
通过最小化预期的错误分类代价进行分类:
地点:
是预测的分类。
K是类的数量。
是类的后验概率吗j为观察x.
将观察结果分类的成本是y当它真正的阶级是j.
分数(树)
对于树木,分数叶节点分类的后验概率是该节点分类的后验概率。一个节点上分类的后验概率是指向该分类节点的训练序列个数除以指向该节点的训练序列个数。
示例请参见分类树的后验概率定义.
真正的误分类代价
真正的错误分类代价是将观察结果分类为错误类别的代价。
方法可以设置每个类的真实错误分类代价“成本”
创建分类器时的名称-值参数。成本(i, j)
将观察结果分类的成本是多少j
当它真正的阶级是我
.默认情况下,成本(i, j) = 1
如果我~ = j
,成本(i, j) = 0
如果我=我
.换句话说,成本是0
正确的分类和1
不正确的分类。
预期成本
每个观测结果的预期错误分类代价是将观测结果分类到每一类的平均代价。
假设你有脑袋
你想用训练有素的分类器对观察结果进行分类,你有K
类。你把观察结果放入一个矩阵中X
每行一个观察值。
预期成本矩阵CE
有大小脑袋
——- - - - - -K
.每一行的CE
包含将观察结果分类为每个的预期(平均)成本K
类。CE (n,k)
是
地点:
K是类的数量。
是类的后验概率吗我为观察X(n).
将观察结果分类的真正错误分类成本是k当它真正的阶级是我.
联想预测法
的联想的预测度量指示分割观察结果的决策规则之间的相似性的值。在所有可能的决策分割中,与最优分割(通过种植树找到)进行比较,最好的代理决定分手产生关联的最大预测度量。第二好的代理分裂具有第二好的关联预测指标。
假设xj而且xk预测变量j而且k分别为,j≠k.在节点t,最优分割之间关联的预测度量xj<u代理分裂xk<v是
Pl节点中观测的比例是多少t,这样xj<u.下标l表示节点的左子节点t.
PR节点中观测的比例是多少t,这样xj≥u.下标R表示节点的右子节点t.
节点上的观测占比是多少t,这样xj<u而且xk<v.
节点上的观测占比是多少t,这样xj≥u而且xk≥v.
缺少值的观察值xj或xk不参与比例计算。
λjk是(-∞,1]的值。如果λjk> 0,然后xk<v值得拆分代理吗xj<u.
算法
预测
的分支生成预测Mdl
直到它到达叶节点或丢失的值。如果预测
到达一个叶节点,它返回该节点的分类。
如果预测
到达一个预测器缺少值的节点,其行为取决于代理
名称-值对的时候fitctree
构造Mdl
.
代理
=“关闭”
(默认)预测
返回到达节点的训练样本数量最大的标签。代理
=“上”
- - - - - -预测
在节点上使用最佳代理程序拆分。如果所有代理拆分变量为正联想的预测度量人失踪,预测
返回到达节点的训练样本数量最大的标签。有关定义,请参见联想预测法.
选择功能
仿真软件块
将分类树模型的预测集成到Simulink中®,你可以使用ClassificationTree预测在统计和机器学习工具箱™库或MATLAB中®函数块中包含预测
函数。有关示例,请参见使用分类树预测块预测类标签而且用MATLAB函数块预测类标签.
在决定使用哪种方法时,请考虑以下几点:
如果使用“统计和机器学习工具箱”库块,则可以使用定点的工具(定点设计师)将浮点模型转换为定点模型。
控件必须为MATLAB函数块启用对可变大小数组的支持
预测
函数。如果使用MATLAB函数块,则可以使用MATLAB函数在同一个MATLAB函数块中进行预测前后的预处理或后处理。
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
这个函数完全支持高数组。通过这个函数,您可以使用针对内存中数据或高数据训练的模型。
有关更多信息,请参见高大的数组.
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
您可以为两者生成C/ c++代码
预测
而且更新
通过使用编码器配置器。或者,仅生成用于的代码预测
通过使用saveLearnerForCoder
,loadLearnerForCoder
,codegen
.代码生成的
预测
而且更新
-创建一个编码器配置器使用learnerCoderConfigurer
然后通过使用生成代码generateCode
.然后您可以在生成的代码中更新模型参数,而不必重新生成代码。代码生成的
预测
-通过使用保存训练过的模型saveLearnerForCoder
.定义一个入口点函数,用于加载保存的模型loadLearnerForCoder
并调用预测
函数。然后使用codegen
(MATLAB编码器)为入口点函数生成代码。
生成单精度的C/ c++代码
预测
,指定名称-值参数“数据类型”、“单身”
当你打电话给loadLearnerForCoder
函数。还可以为。生成定点C/ c++代码
预测
.定点代码生成需要一个额外的步骤,该步骤定义预测所需变量的定点数据类型。方法创建定点数据类型结构数据类型的函数生成的generateLearnerDataTypeFcn
,并使用该结构作为的输入参数loadLearnerForCoder
在一个入口点函数中。生成定点C/ c++代码需要MATLAB编码器™和定点设计师™。该表包含关于的参数的注释
预测
.该表中未包含的参数完全支持。论点 笔记和局限性 Mdl
有关模型对象的使用说明和限制,请参见代码生成的
CompactClassificationTree
对象。X
对于一般代码生成,
X
必须是单精度或双精度矩阵,或包含数值变量、类别变量或两者都包含的表。在编码器配置工作流程中,
X
必须是单精度或双精度矩阵。对于定点代码生成,
X
必须是一个不动点矩阵。中的行数或观察数
X
可以是可变大小的,但列数在X
必须是固定的。如果你想指定
X
作为一个表,那么你的模型必须使用一个表来训练,你的预测入口点函数必须做以下工作:接受数据作为数组。
从数据输入参数创建一个表,并在表中指定变量名。
把桌子递给
预测
.
有关此表工作流的示例,请参见生成代码对表格中的数据进行分类.有关在代码生成中使用表的更多信息,请参见表的代码生成(MATLAB编码器)而且表代码生成的限制(MATLAB编码器).
标签
如果响应数据类型为 字符
而且codegen
不能确定的值子树
是标量吗标签
是字符向量的单元格数组。“子树”
名称-值参数中的名称必须是编译时常量。例如,要在生成的代码中允许用户定义的修剪级别,包括
{coder.Constant(子树),coder.typeof (0, (1, n), [0,1])}
在arg游戏
的价值codegen
(MATLAB编码器),在那里n
是马克斯(Mdl.PruneList)
.的
“子树”
在编码器配置程序工作流中不支持名值对参数。对于定点代码生成,可以使用
“子树”
值必须是coder.Constant(所有的)
或者使用整数数据类型。
有关更多信息,请参见代码生成简介.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
版本历史
介绍了R2011a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。