主要内容

预测

使用分类模型的集合对观测数据进行分类

描述

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

标签=预测(MdlX名称,值使用一个或多个指定的其他选项名称,值对参数。

标签分数) =预测(___还返回一个分类矩阵分数分数),表示标签来自特定类的可能性,使用前面语法中的任何输入参数。每项观察结果X,预测班级标签对应所有班级中的最高分。

输入参数

Mdl

由。创建的分类集合fitcensemble或者是一个紧凑的分类集合紧凑的

X

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

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

  • 对于数字矩阵:

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

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

  • 一个表:

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

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

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

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

学习者

弱学习者的指标预测用于计算响应,一个数字向量。

默认值:1: T,在那里T学习能力差的人数在吗Mdl

UseObsForLearner

大小的逻辑矩阵N——- - - - - -T,地点:

  • N行数是多少X

  • T学习能力差的人数在吗Mdl

UseObsForLearner (i, j)真正的,学习者j用于预测行的类X

默认值:真正的(N, T)

UseParallel

指示并行执行推理,指定为(串行计算)或真正的(并行计算)。并行计算需要并行计算工具箱™。并行推理比串行推理更快,特别是对于大型数据集。并行计算只支持树型学习者。

默认值:

输出参数

标签

分类标签的向量。标签是否与训练中使用的标签具有相同的数据类型Mdl(该软件将字符串数组视为字符向量的单元格数组。)

预测函数将观察结果划分为产生最高分的类别。对于观察分数,该函数将观察分为多数类,这在训练标签中所占的比例最大。

分数

一个矩阵,每个观察结果一行,每个类一列。对于每个观察结果和每个班级,分数代表观察结果源自该班级的置信度。分数越高,说明自信心越强。有关更多信息,请参见评分(整体)

例子

全部展开

载入费雪的虹膜数据集。确定样本大小。

负载fisheriris1) N =大小(量;

将数据划分为训练集和测试集。保留10%的数据用于测试。

rng (1);%的再现性本量利= cvpartition (N,“坚持”, 0.1);idxTrn =培训(cvp);%训练集指标idxTest =测试(cvp);%测试集索引

将训练数据存储在一个表中。

tblTrn = array2table(量(idxTrn:));tblTrn。Y =物种(idxTrn);

使用AdaBoostM2和训练集训练分类集合。指定树桩作为弱学习者。

t = templateTree (“MaxNumSplits”1);Mdl = fitcensemble (tblTrn,“Y”“方法”“AdaBoostM2”“学习者”t);

预测测试集的标签。您可以使用数据表训练模型,但可以使用矩阵预测标签。

标签=预测(Mdl量(idxTest:));

为测试集构造一个混淆矩阵。

confusionchart(物种(idxTest)、标签)

图包含一个类型为confusimatrixchart的对象。

Mdl在测试集中,将一个彩色鸢尾错误地分类为virginica。

创建一个增强树的集合,并检查每个预测器的重要性。利用测试数据,评估集合的分类精度。

加载心律失常数据集。确定数据中的类表示。

负载心律失常Y =分类(Y);汇总(Y)
数值计数百分比1 245 54.20% 2 44 9.73% 3 15 3.32% 4 15 3.32% 5 13 2.88% 6 25 5.53% 73 0.66% 8 2 0.44% 99 1.99% 10 50 11.06% 14 4 0.88% 15 5 1.11% 16 22 4.87%

数据集包含16个类,但并不是所有的类都有表示(例如,类13)。大多数观察结果被归类为无心律失常(第1类)。数据集高度离散,类别不平衡。

将所有心律失常的观察结果(2 - 15班)合并到一个班。从数据集中删除心律失常状态未知的观察结果(第16类)。

idx = (Y ~=“16”);Y = Y (idx);X = X (idx:);Y (Y ~ =“1”) =“WithArrhythmia”;Y (Y = =“1”) =“NoArrhythmia”;Y = removecats (Y);

创建一个分区,将数据平均地划分为训练集和测试集。

rng (“默认”%的再现性本量利= cvpartition (Y,“坚持”, 0.5);idxTrain =培训(cvp);idxTest =测试(cvp);

本量利是一个指定训练集和测试集的交叉验证分区对象。

训练100个增强分类树的集合AdaBoostM1.指定使用树桩作为弱学习者。另外,由于数据集包含缺失的值,请指定使用代理分割。

t = templateTree (“MaxNumSplits”, 1“代孕”“上”);numTrees = 100;mdl = fitcensemble (X (idxTrain:), Y (idxTrain),“方法”“AdaBoostM1”...“NumLearningCycles”numTrees,“学习者”t);

mdl是一个培训ClassificationEnsemble模型。

检查每个预测因子的重要性度量。

predImportance = predictorImportance (mdl);标题栏(predImportance) (“预测的重要性”)包含(“预测”) ylabel (“重要措施”

图中包含一个axes对象。标题为Predictor Importance的axes对象包含一个类型为bar的对象。

根据它们的重要性确定前十个预测因素。

[~, idxSort] =排序(predImportance,“下”);idx10 = idxSort (1:10)
idx10 =1×10228 233 238 93 15 224 91 177 260 277

对测试集观测值进行分类。使用混淆矩阵查看结果。蓝色值表示正确的分类,红色值表示错误的分类。

predictedValues =预测(mdl X (idxTest:));confusionchart (Y (idxTest), predictedValues)

图包含一个类型为confusimatrixchart的对象。

根据测试数据计算模型的准确性。

错误=损失(mdl X (idxTest:), Y (idxTest),...“LossFun”“classiferror”);精度= 1 -误差
精度= 0.7731

精度估计正确分类的观测的比例。

更多关于

全部展开

选择功能

仿真软件块

将集合的预测集成到Simulink中®,你可以使用ClassificationEnsemble预测在统计和机器学习工具箱™库或MATLAB中®函数块中包含预测函数。有关示例,请参见使用ClassificationEnsemble预测块预测类标签而且用MATLAB函数块预测类标签

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

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

  • 控件必须为MATLAB函数块启用对可变大小数组的支持预测函数。

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

扩展功能

版本历史

介绍了R2011a

Baidu
map