预测
使用朴素贝叶斯分类器对观测数据进行分类
描述
例子
朴素贝叶斯分类器的标签检验样本观测
加载fisheriris
数据集。创建X
作为一个数字矩阵,包含四个花瓣测量150鸢尾花。创建Y
作为包含相应虹膜种类的特征向量的单元数组。
负载fisheririsX = meas;Y =物种;rng (“默认”)再现率%
将观测数据分层随机划分为训练集和测试集,利用分类信息Y
.指定30%的样品进行测试。
cv = cvpartition(Y,“坚持”, 0.30);
提取训练指标和测试指标。
trainInds =培训(cv);testInds =测试(cv);
指定训练和测试数据集。
XTrain = X(trainInds,:);YTrain = Y(trainInds);XTest = X(testInds,:);YTest = Y(testInds);
使用预测器训练朴素贝叶斯分类器XTrain
和类别标签YTrain
.推荐的做法是指定类名。fitcnb
假设每个预测因子都是有条件的正态分布。
Mdl = fitcnb(XTrain,YTrain,“类名”, {“setosa”,“多色的”,“virginica”})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 105 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell}属性,方法
Mdl
是受过训练的ClassificationNaiveBayes
分类器。
预测测试样品标签。
idx = randsample(sum(testInds),10);label = predict(Mdl,XTest);
显示测试样本中10个观察值的随机集合的结果。
表(欧美(idx),标签(idx),“VariableNames”,...{“TrueLabel”,“PredictedLabel”})
ans =10×2表TrueLabel PredictedLabel ______________ ______________ {' virginica’}{‘virginica}{“癣”}{“癣”}{“癣”}{“癣”}{‘virginica}{‘virginica}{‘setosa}{‘setosa}{‘virginica}{‘virginica}{‘setosa}{‘setosa}{“癣”}{“癣”}{“癣”}{‘virginica}{“癣”}{“癣”}
根据真实标签制作一个混淆表欧美
预测的标签标签
.
cm = confusionchart(YTest,label);
估算后验概率和错误分类代价
使用朴素贝叶斯分类器估计新观测的后验概率和错误分类代价。使用内存高效的预训练分类器对新观测进行分类。
加载fisheriris
数据集。创建X
作为一个数字矩阵,包含四个花瓣测量150鸢尾花。创建Y
作为包含相应虹膜种类的特征向量的单元数组。
负载fisheririsX = meas;Y =物种;rng (“默认”)再现率%
将数据集划分为两个集:一个包含训练集,另一个包含新的、未观察到的数据。为新数据集保留10个观测值。
n = size(X,1);newInds = randsample(n,10);inds = ~ismember(1:n,newInds);XNew = X(newInds,:);YNew = Y(newInds);
使用预测器训练朴素贝叶斯分类器X
和类别标签Y
.推荐的做法是指定类名。fitcnb
假设每个预测因子都是有条件的正态分布。
Mdl = fitcnb(X(inds,:)),Y(inds),...“类名”, {“setosa”,“多色的”,“virginica”});
Mdl
是受过训练的ClassificationNaiveBayes
分类器。
通过减少训练过的朴素贝叶斯分类器的大小来节省内存。
CMdl =紧凑(Mdl);谁(“Mdl”,“CMdl”)
名称大小字节类属性CMdl 1x1 5406 classreg.learning.classif.CompactClassificationNaiveBayes Mdl 1x1 12731 ClassificationNaiveBayes
CMdl
是一个CompactClassificationNaiveBayes
分类器。它使用的内存比Mdl
因为Mdl
存储数据。
的类名CMdl
使用点表示法。
CMdl。类Names
ans =3 x1细胞{'setosa'} {'versicolor'} {'virginica'}
预测标签。估计后验概率和预期的类别错误分类代价。
[labels,PostProbs,MisClassCost] = predict(CMdl,XNew);
将真实标签与预测标签进行比较。
表(YNew、标签PostProbs MisClassCost,“VariableNames”,...{“TrueLabels”,“PredictedLabels”,...“PosteriorProbabilities”,“MisclassificationCosts”})
ans =10×4表TrueLabels PredictedLabels PosteriorProbabilities MisclassificationCosts ______________ _______________ _________________________________________ ______________________________________ {' virginica’}{‘virginica} 4.0832 e - 268 4.6422 e-09 1 1 1 4.6422 e-09{‘setosa}{‘setosa} 1 3.0706 3.0706 4.6719 e-18 e-25 e-18 1 1{‘virginica}{‘virginica} 1.0007 e - 246 5.8758平台以及1 1 1 5.8758平台以及{“癣”}{“癣”}1.2022 e - 61 0.99995 4.9859 e-05 1 4.9859 0.99995 e-05{‘virginica} {' virginica '}2.687e-226 1.7905e-08 1 1 1 1.7905e-08 {'versicolor'} {'versicolor'} 3.3431e-76 0.99971 0.00028983 1 0.00028983 0.00028983 {'virginica'} {'virginica'} 4.05e-166 0.0028527 0.99715 1 0.99715 0.0099927 {' settosa '} {' settosa '} 1 1.1272e-14 2.0308e-23 1.1272e-14 1 1 1 8.3604e-10 {' settosa '} {' settosa '} 1 4.5023e- 28 2.1724e-24 4.5023e-17 1 1 1
PostProbs
而且MisClassCost
是10
——- - - - - -3.
数字矩阵,其中每行对应一个新的观察值,每列对应一个类。列的顺序对应于的顺序CMdl。类Names
.
绘制朴素贝叶斯分类器的后验概率区域
加载fisheriris
数据集。创建X
作为一个数字矩阵,包含150个鸢尾花的花瓣长度和宽度测量。创建Y
作为包含相应虹膜种类的特征向量的单元数组。
负载fisheririsX = meas(:,3:4);Y =物种;
使用预测器训练朴素贝叶斯分类器X
和类别标签Y
.推荐的做法是指定类名。fitcnb
假设每个预测因子都是有条件的正态分布。
Mdl = fitcnb(X,Y,“类名”, {“setosa”,“多色的”,“virginica”});
Mdl
是受过训练的ClassificationNaiveBayes
分类器。
在观察到的预测器空间中定义一个值网格。
xMax = max(X);xMin = min(X);H = 0.01;[x1Grid, x2Grid] = meshgrid (xMin (1): h: xMax (1) xMin (2): h: xMax (2));
预测网格中每个实例的后验概率。
[~, PosteriorRegion] =预测(Mdl [x1Grid (:), x2Grid (:)));
绘制后验概率区域和训练数据。
h = scatter(x1Grid(:),x2Grid(:),1,PosteriorRegion);h.MarkerEdgeAlpha = 0.3;
绘制数据图。
持有在gh = gscatter(X(:,1),X(:,2),Y,“k”,“dx *”);标题“虹膜花瓣测量和后验概率”;包含“花瓣长度(厘米)”;ylabel“花瓣宽度(厘米)”;轴紧传奇(gh,“位置”,“最佳”)举行从
输入参数
Mdl
- - - - - -朴素贝叶斯分类模型
ClassificationNaiveBayes
模型对象|CompactClassificationNaiveBayes
模型对象
朴素贝叶斯分类模型,指定为ClassificationNaiveBayes
模型对象或CompactClassificationNaiveBayes
返回的模型对象fitcnb
或紧凑的
,分别。
X
- - - - - -预测数据要分类
数字矩阵|表格
要分类的预测器数据,指定为数字矩阵或表格。
每行X
对应一个观察结果,每一列对应一个变量。
对于数值矩阵:
组成列的变量
X
必须与训练的预测变量有相同的顺序Mdl
.如果你训练
Mdl
使用表格(例如,资源描述
),然后X
可以是一个数字矩阵如果资源描述
只包含数值预测变量。处理中的数值预测器资源描述
作为分类训练,识别分类预测器使用“CategoricalPredictors”
的名称-值对参数fitcnb
.如果资源描述
包含异构预测变量(例如,数字和分类数据类型)和X
是数字矩阵吗预测
抛出错误。
对于表格:
预测
不支持多列变量或除万博1manbetx字符向量的单元格数组外的单元格数组。如果你训练
Mdl
使用表格(例如,资源描述
),然后输入所有预测变量X
必须具有与训练的变量相同的变量名和数据类型Mdl
(存储在Mdl。PredictorNames
).的列序X
是否需要对应的列顺序资源描述
.资源描述
而且X
可以包含额外的变量(响应变量、观察权重等),但是预测
忽略了它们。如果你训练
Mdl
使用一个数字矩阵,然后预测器名称在Mdl。PredictorNames
必须与中对应的预测变量名称相同X
.若要在训练期间指定预测器名称,请使用'PredictorNames
的名称-值对参数fitcnb
.所有预测变量X
必须是数值向量。X
可以包含额外的变量(响应变量、观察权重等),但是预测
忽略了它们。
数据类型:表格
|双
|单
注:
如果
Mdl。DistributionNames
是“锰”
,然后软件返回南
S对应的行X
至少包含一个南
.如果
Mdl。DistributionNames
不是“锰”
,那么软件就会忽略南
估算错误分类代价和后验概率时的值。具体来说,该软件通过忽略与缺失预测器值对应的因素来计算给定类的预测器的条件密度。对于预测器分布,指定为
“mvmn”
,如果X
包含未在训练数据中表示的级别(即,不在训练数据中表示)Mdl。CategoricalLevels
对于该预测器),那么给定类的预测器的条件密度为0。对于这些观察结果,软件返回相应的值后
作为一个南
.该软件使用存储在中的类先验概率确定此类观测的类标签Mdl。Prior
.
输出参数
标签
-预测船级标签
分类向量|字符数组|逻辑向量|数字向量|字符向量单元数组
预测类标签,作为分类向量、字符数组、逻辑或数字向量或字符向量的单元格数组返回。
预测的类标签有以下内容:
与观察到的类标签相同的数据类型(
Mdl。Y
).(该软件将字符串数组视为字符向量的单元格数组。)长度等于的行数
Mdl。X
.产生最低预期错误分类代价(
成本
).
后
-类后验概率
数字矩阵
类后验概率,作为数字矩阵返回。后
行数是否等于的行数Mdl。X
列等于训练数据中不同类的数量(尺寸(Mdl.ClassNames, 1)
).
后(j, k)
是类的预测后验概率吗k
(在课堂上Mdl.ClassNames (k)
)给出一行的观察结果j
的Mdl。X
.
成本
-预期的分类错误成本
数字矩阵
预期误分类代价,作为数字矩阵返回。成本
行数是否等于的行数Mdl。X
列等于训练数据中不同类的数量(尺寸(Mdl.ClassNames, 1)
).
成本(j, k)
观测的预期错分类代价是连续的吗j
的Mdl。X
预测进入课堂k
(在课堂上Mdl.ClassNames (k)
).
更多关于
误分类代价
一个误分类代价是分类器将观察结果标记到错误类的相对严重程度。
存在两种类型的错误分类成本:真实的和预期的。让K是类的数量。
真实误分类成本——一个K——- - - - - -K矩阵,其中元素(我,j)表示将观测值分类的代价j如果它真正的阶级是我.软件将错误分类代价存储在属性中
Mdl。成本
,并将其用于计算。默认情况下,Mdl.Cost (i, j)
= 1我
≠j
,Mdl.Cost (i, j)
= 0我
=j
.换句话说,成本是0
正确的分类和1
任何不正确的分类。预期误分类成本——一个K-维向量,其中元素k将观测数据分类的加权平均成本是多少k,由类后验概率加权。
换句话说,该软件将观测数据分类为期望错误分类成本最低的类别。
后验概率
的后验概率在给定数据的情况下,观测值属于特定类别的概率。
对于朴素贝叶斯,一个分类的后验概率是k对于给定的观察结果(x1、……xP)是
地点:
预测器的条件关节密度是给定的吗k.
Mdl。DistributionNames
存储预测器的分布名称。π(Y=k)为类先验概率分布。
Mdl。Prior
存储先前的分布。是预测因子的联合密度。类是离散的,所以
先验概率
的先验概率一个类别是假设的相对频率,从该类别的观察出现在一个总体。
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
这个函数完全支持高数组。万博1manbetx您可以使用这个函数使用在内存中或大数据上训练的模型。
有关更多信息,请参见高大的数组.
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
使用
saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB编码器)方法生成代码预测
函数。通过使用保存一个训练好的模型saveLearnerForCoder
.定义一个入口点函数,该函数通过loadLearnerForCoder
并调用预测
函数。然后使用codegen
为入口点函数生成代码。生成单精度C/ c++代码
预测
,指定名称-值参数“数据类型”、“单身”
当你打电话给loadLearnerForCoder
函数。该表包含关于的参数的注释
预测
.完全支持不包括在本表中的参数。万博1manbetx论点 注意事项和限制 Mdl
有关模型对象的使用说明和限制,请参见代码生成的
CompactClassificationNaiveBayes
对象。X
X
必须是单精度或双精度矩阵或包含数值变量、类别变量或两者的表。的行数,或观测值
X
可以是大小可变的,但列的数量呢X
必须修复。如果你想指定
X
作为一个表,那么你的模型必须使用一个表来训练,你的预测入口点函数必须做到以下几点:接受数据作为数组。
根据数据输入参数创建一个表,并在表中指定变量名。
把桌子递给
预测
.
有关此表工作流的示例,请参见生成代码对表中的数据进行分类.有关在代码生成中使用表的详细信息,请参见表的代码生成(MATLAB编码器)而且代码生成的表限制(MATLAB编码器).
有关更多信息,请参见代码生成简介.
版本历史
在R2014b中引入
Matlab명령
다음matlab명령에해당하는링크를클릭했습니다。
명령을실행하려면matlab명령창에입력하십시오。웹브라우저는matlab명령을지원하지않습니다。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。