主要内容

预测

使用分类树预测标签

描述

标签=预测(MdlX返回表或矩阵中预测器数据的预测类标签向量X,基于训练过的、完整的或紧凑的分类树Mdl

标签=预测(MdlX名称,值使用一个或多个指定的附加选项名称,值对参数。例如,你可以指定去修剪Mdl在预测标签之前达到一个特定的水平。

标签分数节点cnum) =预测(___使用前面语法中的任何输入参数,并额外返回:

  • 分类分数矩阵(分数)表示标签来自特定类的可能性。对于分类树,分数是后验概率。对于每一个X,预测类标签对应于最小值预期的误分类代价在所有类。

  • 用于分类的预测节点数向量(节点).

  • 用于分类的预测类别数的向量(cnum).

输入参数

全部展开

训练过的分类树,指定为ClassificationTreeCompactClassificationTree模型对象。也就是说,Mdl是否返回训练过的分类模型fitctree紧凑的

要分类的预测器数据,指定为数字矩阵或表。

每一行的X对应一个观察值,每一列对应一个变量。

  • 对于数值矩阵:

    • 组成列的变量X必须和训练的预测变量有相同的顺序吗Mdl

    • 如果你训练Mdl使用表(例如,资源描述),然后X可以是一个数字矩阵,如果资源描述包含所有数值预测变量。处理数值预测资源描述作为分类训练,识别分类预测使用CategoricalPredictors的名称-值对参数fitctree.如果资源描述包含异构预测变量(例如,数字和分类数据类型)和X是一个数值矩阵,那么预测抛出一个错误。

  • 一个表:

    • 预测除了字符向量的单元金宝app格数组外,不支持多列变量或单元格数组。

    • 如果你训练Mdl使用表(例如,资源描述),然后所有预测变量X必须具有与那些训练过的相同的变量名和数据类型Mdl(存储在Mdl。PredictorNames).但是,的列顺序X不需要对应的列顺序资源描述资源描述X可以包含额外的变量(响应变量,观察权重等),但是预测忽略了它们。

    • 如果你训练Mdl使用一个数字矩阵,然后预测器命名Mdl。PredictorNames和相应的预测变量名X肯定是一样的。要在训练期间指定预测器名称,请参见PredictorNames的名称-值对参数fitctree.所有的预测变量X必须是数值向量。X可以包含额外的变量(响应变量,观察权重等),但是预测忽略了它们。

数据类型:表格||

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

修剪级别,指定为逗号分隔的对,由“子树”一个非负整数的升序或向量“所有”

如果指定一个向量,则所有元素必须至少为0在大多数马克斯(Mdl.PruneList)0表示完整的、未修剪的树马克斯(Mdl.PruneList)表示被完全修剪的树(即根节点)。

如果您指定“所有”,然后预测操作所有的子树(即,整个修剪序列)。这个规范等同于使用0:马克斯(Mdl.PruneList)

预测李子Mdl的每一层子树,然后估计相应的输出参数。的大小子树确定某些输出参数的大小。

调用子树,属性PruneListPruneAlphaMdl必须非空的。换句话说,就是成长Mdl通过设置“删除”,“上”,或修剪Mdl使用修剪

例子:“子树”,“所有”

数据类型:||字符|字符串

输出参数

全部展开

预测类标签,作为向量或数组返回。每个条目的标签的对应行的期望成本最小的类X

假设子树是一个数字向量包含T元素(“所有”,请参阅子树),XN行。

  • 如果响应数据类型为字符和:

    • T= 1,然后标签是一个字符矩阵包含N行。每行包含由子树生成的预测标签子树

    • T> 1,那么标签是一个N——- - - - - -T单元阵列。

  • 否则,标签是一个N——- - - - - -T具有与响应相同数据类型的数组。(该软件将字符串数组视为字符向量的单元格数组。)

在后两种情况下,列j标签包含子树生成的预测标签向量子树(j

后验概率,以大小的数字矩阵返回N——- - - - - -K,在那里N观察的数量(行)在吗X,K班级数(在?Mdl。ClassNames).评分(i, j)后验概率是这一行吗X的类j

如果子树T元素,XN行,然后分数是一个N——- - - - - -K——- - - - - -T数组,并节点cnumN——- - - - - -T矩阵。

预测类的节点号,作为数字向量返回。每个条目对应于中的预测节点Mdl对应的行X

与预测的类数相对应标签,作为数字向量返回。每个条目的cnum的对应行的预测类号X

例子

全部展开

检查训练中遗漏的数据集中的几行预测。

载入费雪的虹膜数据集。

负载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,“模式”“图”

图分类树查看器包含一个轴和其他类型的uimenu, uicontrol对象。轴包含18个类型为line, text的对象。

结果树有四个层次。

使用修剪到级别1和3的子树估计测试集的后验概率。

[~,后]=预测(Mdl量(idxVal:)“子树”3 [1]);Mdl。ClassNames
ans =3 x1细胞{'setosa'} {'versicolor'} {'virginica'}
后(randsample(大小(后,1),5),:,:),...显示几个后验概率
ans = ans (:: 1) = 1.0000 0 0 0 0 0 0 0 0 1.0000 1.0000 1.0000 0.8571 - 0.1429 ans (:,: 2) = 0.3733 0.3200 0.3067 0.3733 0.3200 0.3067 0.3733 0.3200 0.3067 0.3733 0.3200 0.3067 0.3733 0.3200 0.3067

的元素为类后验概率:

  • 行对应于验证集中的观察值。

  • 列对应于中列出的类Mdl。ClassNames

  • 页面对应于子树。

被修剪到级别1的子树比被修剪到级别3(即根节点)的子树更确定其预测。

更多关于

全部展开

算法

预测的分支生成预测Mdl直到它到达叶节点或丢失的值。如果预测到达叶节点时,它返回该节点的分类。

如果预测到达一个缺少预测器值的节点时,其行为取决于代理名称-值对的时候fitctree构造Mdl

  • 代理“关闭”(默认)预测返回到达节点的训练样本数量最大的标签。

  • 代理“上”- - - - - -预测在节点上使用最佳代理分割。如果所有的代理变量都为正联想预测测量人失踪,预测返回到达节点的训练样本数量最大的标签。关于定义,请参见联想预测测量

选择功能

金宝app仿真软件块

将分类树的预测模型集成到Simulink中金宝app®,你可以使用ClassificationTree预测块在统计和机器学习工具箱™库或MATLAB®函数块预测函数。有关示例,请参见使用ClassificationTree预测块预测类标签用MATLAB函数块预测类标签

在决定使用哪种方法时,请考虑以下几点:

  • 如果使用统计学和机器学习工具箱库块,则可以使用定点的工具(定点设计师)将浮点模型转换为定点模型。

  • 金宝app的MATLAB函数块必须启用对可变大小数组的支持预测函数。

  • 如果您使用MATLAB函数块,您可以使用MATLAB函数在同一个MATLAB函数块中进行预测之前或之后的预处理或后处理。

扩展功能

介绍了R2011a