预测
使用判别分析分类模型预测标签
描述
输入参数
Mdl
- - - - - -判别分析分类模型
ClassificationDiscriminant
模型对象|CompactClassificationDiscriminant
模型对象
判别分析分类模型,具体为ClassificationDiscriminant
或CompactClassificationDiscriminant
返回的模型对象fitcdiscr
.
X
- - - - - -预测数据需分类
数字矩阵|表格
要分类的预测数据,指定为数字矩阵或表格。
每一行的X
对应一个观察结果,每一列对应一个变量。的所有预测变量X
必须是数字向量。
对于数值矩阵,组成列的变量
X
必须与训练的预测变量的顺序相同Mdl
.一个表:
预测
除了字符向量的单元格数组外,不支持多列变量和单元格数组。如果你训练
Mdl
使用一个表(例如,资源描述
),则所有预测变量均为X
必须具有与受训对象相同的变量名和数据类型Mdl
(存储在Mdl。PredictorNames
).的列顺序X
是否需要对应列的顺序资源描述
.资源描述
而且X
可以包含额外的变量(响应变量、观察权重等),但是预测
忽略了它们。如果你训练
Mdl
使用一个数字矩阵,然后预测器名称在Mdl。PredictorNames
和对应的预测变量名X
一定是一样的。若要在训练期间指定预测器名称,请参阅PredictorNames
的名值对参数fitcdiscr
.X
可以包含额外的变量(响应变量、观察权重等),但是预测
忽略了它们。
数据类型:表格
|双
|单
输出参数
成本
-预期分类费用
数字矩阵
预期成本分类,作为大小矩阵返回N
——- - - - - -K
.N
观察数(行)在吗X
,K
班的数量(在?Mdl。ClassNames
).成本(i, j)
行分类的成本是多少我
的X
作为类j
在Mdl。ClassNames
.
例子
用判别分析模型预测类标签
载入费雪的虹膜数据集。确定样本大小。
负载fisheriris1) N =大小(量;
将数据划分为训练集和测试集。保留10%的数据用于测试。
rng (1);%的再现性本量利= cvpartition (N,“坚持”, 0.1);idxTrn =培训(cvp);%训练集指标idxTest =测试(cvp);%测试集索引
将训练数据存储在一个表中。
tblTrn = array2table(量(idxTrn:));tblTrn。Y=species(idxTrn);
使用训练集和默认选项训练判别分析模型。
Mdl = fitcdiscr (tblTrn,“Y”);
预测测试集的标签。你训练Mdl
使用数据表,但可以使用矩阵预测标签。
标签=预测(Mdl量(idxTest:));
为测试集构造一个混淆矩阵。
confusionchart(物种(idxTest)、标签)
Mdl
在测试集中,将一个彩色鸢尾错误地分类为virginica。
图类后验概率区域
载入费雪的虹膜数据集。考虑只使用花瓣的长度和宽度进行训练。
负载fisheririsX =量(:,3:4);
利用整个数据集训练一个二次判别分析模型。
Mdl = fitcdiscr (X,物种,“DiscrimType”,“二次”);
在观察到的预测器空间中定义一个值的网格。预测网格中每个实例的后验概率。
xMax = max (X);xMin = min (X);d = 0.01;[x1Grid, x2Grid] = meshgrid (xMin (1): d: xMax (1) xMin (2): d: xMax (2));[~,分数]=预测(Mdl [x1Grid (:), x2Grid (:)));Mdl。ClassNames
ans =3 x1细胞{'setosa'} {'versicolor'} {'virginica'}
分数
是类后验概率的矩阵。中的类对应这些列Mdl。ClassNames
.例如,分数(j, 1)
后验概率是观察到的吗j
是鸢尾花。
在网格中绘制每个观察的多色分类的后验概率,并绘制训练数据。
图;contourf (x1Grid x2Grid,重塑(分数(:,2),大小(x1Grid, 1),大小(x1Grid, 2)));h = colorbar;caxis ([0 1]);colormap飞机;持有在gscatter (X (: 1) X(:, 2),物种,“mcy”,的方式来+);轴紧标题("五彩缤纷的后验概率");持有从
后验概率区域暴露了决策边界的一部分。
更多关于
后验概率
一个点的后验概率x属于类k是先验概率和多元正态密度的乘积。1 × -的多元法线的密度函数d的意思是μk而且d——- - - - - -d协方差Σk在1 -d点x是
在哪里 是Σ的行列式k, 是逆矩阵。
让P(k)表示类的先验概率k.然后是观察到的后验概率x的类k是
在哪里P(x)是一个归一化常数,是对的和k的P(x|k)P(k).
先验概率
先验概率是以下三种选择之一:
“统一”
-类的先验概率k
等于1除以总类数。“经验”
-类的先验概率k
班的训练样本数量是多少k
除以训练样本总数。自定义-类的先验概率
k
是k
的第Th元素之前
向量。看到fitcdiscr
.
在创建分类模型之后(Mdl
)你可以使用点表示法设置优先级:
Mdl。Prior = v;
在哪里v
是正元素的向量,表示每个元素出现的频率。在设置新的先验值时,不需要重新训练分类器。
成本
每次观察的预期费用矩阵定义在成本.
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
这个函数完全支持高数组。通过这个函数,您可以使用针对内存中数据或高数据训练的模型。
有关更多信息,请参见高大的数组.
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
使用
saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB编码器)来生成的代码预测
函数。保存一个训练过的模型saveLearnerForCoder
.定义一个入口点函数,用于加载保存的模型loadLearnerForCoder
并调用预测
函数。然后使用codegen
为入口点函数生成代码。生成单精度的C/ c++代码
预测
,指定名称-值参数“数据类型”、“单身”
当你打电话给loadLearnerForCoder
函数。该表包含关于的参数的注释
预测
.该表中未包含的参数完全支持。论点 笔记和局限性 Mdl
有关模型对象的使用说明和限制,请参见代码生成的
CompactClassificationDiscriminant
对象。X
X
必须是单精度或双精度矩阵或包含数值变量的表。中的行数或观察数
X
可以是可变大小的,但列数在X
必须是固定的。如果你想指定
X
作为一个表,那么你的模型必须使用一个表来训练,你的预测入口点函数必须做以下工作:接受数据作为数组。
从数据输入参数创建一个表,并在表中指定变量名。
把桌子递给
预测
.
有关此表工作流的示例,请参见生成代码对表格中的数据进行分类.有关在代码生成中使用表的更多信息,请参见表的代码生成(MATLAB编码器)而且表代码生成的限制(MATLAB编码器).
有关更多信息,请参见代码生成简介.
版本历史
介绍了R2011b
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。