使用朴素贝叶斯分类器对观测值进行分类
加载fisheriris
数据集。创建X
作为一个数字矩阵,包含四个花瓣测量150鸢尾。创建Y
作为字符向量的细胞阵列,包含相应的虹膜种类。
负载fisheririsX =量;Y =物种;rng (“默认”)%为了再现性
利用系统中的类信息,将观测数据随机划分为训练集和测试集,并进行分层Y
.指定30%的抵抗样品进行测试。
简历= cvpartition (Y,“坚持”, 0.30);
提取训练和测试指标。
trainInds =培训(简历);testInds =测试(简历);
指定培训和测试数据集。
XTrain = X (trainInds:);YTrain = Y (trainInds);XTest = X (testInds:);欧美= 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'} DistributionParameters: {3x4 cell}属性,方法
Mdl
是一个培训ClassificationNaiveBayes
分类器。
预测测试样本标签。
idx = randsample (sum (testInds), 10);标签=预测(Mdl XTest);
显示测试样本中随机10次观察的结果。
表(欧美(idx),标签(idx),“VariableNames”,...{“TrueLabel”,“PredictedLabel”})
ans =10×2表(UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU弗吉尼亚州}{'versicolor'}{'versicolor'}
根据真实标签创建混淆图欧美
以及预测的标签标签
.
厘米= confusionchart(欧美、标签);
使用朴素贝叶斯分类器估计新观测值的后验概率和误分类代价。使用高效记忆的预训练分类器对新的观察结果进行分类。
加载fisheriris
数据集。创建X
作为一个数字矩阵,包含四个花瓣测量150鸢尾。创建Y
作为字符向量的细胞阵列,包含相应的虹膜种类。
负载fisheririsX =量;Y =物种;rng (“默认”)%为了再现性
将数据集分为两组:一组包含训练集,另一组包含新的未观测数据。为新数据集保留10个观测值。
n =大小(X, 1);newInds = randsample (n, 10);第1 = ~ 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 12707 ClassificationNaiveBayes
CMdl
是一个CompactClassificationNaiveBayes
分类器。它使用的内存比Mdl
因为Mdl
存储数据。
的类名CMdl
使用点符号。
CMdl。类Names
ans=3 x1细胞{'setosa'}{'versicolor'}{'virginica'}
预测标签。估计后验概率和预期分类错误成本。
[标签、后标签、误分类成本]=预测(CMdl、XNew);
比较真实标签和预测标签。
表(YNew、标签PostProbs MisClassCost,“VariableNames”,...{“TrueLabels”,“PredictedLabels”,...“后验概率”,“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 1 1 0.995e -08 {' versiccolor '} {' versiccolor '} 3.343e -76 0.99971 0.00028983 1 0.00028983 0.99971 {'virginica'}} 4.05e-166 0.0028527 0.99715 1 0.99715 0.0028527{'setosa'} {'setosa'} 1 1.1272 -14 2.0308e-23 1.1272 -14 1 1 {'virginica'} {'virginica'} 1.3292e-228 8.3604e-10 1 1 8.3604e-10 {'setosa'}} 1 4.5023e-17 2.1724e-24 4.5023e-17 1 1
事后抢劫
和MisClassCost
是10
——- - - - - -3.
数字矩阵,其中每一行对应一个新的观察结果,每一列对应一个类。列的顺序对应于CMdl。类Names
.
加载fisheriris
数据集。创建X
作为一个数字矩阵,包含四个花瓣测量150鸢尾。创建Y
作为字符向量的细胞阵列,包含相应的虹膜种类。
负载fisheririsX =量(:,3:4);Y =物种;
使用预测器训练朴素贝叶斯分类器X
和类标签Y
.推荐的做法是指定类名。fitcnb
假设每个预测器都是有条件的正态分布。
Mdl = fitcnb (X, Y,“类名”, {“setosa”,“多色的”,“virginica”});
Mdl
是一个培训ClassificationNaiveBayes
分类器。
在观察到的预测值空间中定义一个值网格。
xMax=最大值(X);xMin=min(X);h=0.01;[x1Grid,x2Grid]=meshgrid(xMin(1):h:xMax(1),xMin(2):h:xMax(2));
预测网格中每个实例的后验概率。
[~,后验区域]=predict(Mdl,[x1Grid(:),x2Grid(:)];
绘制后验概率区域和训练数据。
h =散射(x1Grid (:), x2Grid (:), 1, PosteriorRegion);h.MarkerEdgeAlpha = 0.3;
图数据。
持有在gh = gscatter (X (: 1), X (:, 2), Y,“k”,“dx *”);头衔“虹膜花瓣的测量和后验概率”;包含“花瓣长度(厘米)”;ylabel“花瓣宽度(cm)”;轴紧传奇(gh,“位置”,“最好的”)举行从
Mdl
—朴素贝叶斯分类模型ClassificationNaiveBayes
模型对象|CompactClassificationNaiveBayes
模型对象朴素贝叶斯分类模型,指定为ClassificationNaiveBayes
模型对象或CompactClassificationNaiveBayes
返回的模型对象fitcnb
或紧凑的
分别地
X
—预测数据分类要分类的预测器数据,指定为数字矩阵或表。
每一行的X
对应一个观察值,每一列对应一个变量。
对于数值矩阵:
一个表:
预测
除了字符向量的单元金宝app格数组外,不支持多列变量或单元格数组。
如果你训练Mdl
使用表格(例如,资源描述
),然后所有预测变量X
必须具有与训练的变量相同的变量名和数据类型Mdl
(存储在Mdl。PredictorNames
).但是,的列顺序X
不需要对应于的列顺序资源描述
.资源描述
和X
可以包含额外的变量(响应变量、观察权重等),但是预测
忽视他们。
如果你训练Mdl
使用一个数字矩阵,然后预测器命名Mdl。PredictorNames
必须与中对应的预测器变量名相同X
。要在培训期间指定预测值名称,请使用'PredictorNames
的名称-值对参数fitcnb
.所有的预测变量X
必须是数值向量。X
可以包含额外的变量(响应变量、观察权重等),但是预测
忽视他们。
数据类型:表格
|双
|单
注:
如果Mdl。DistributionNames
是“mn”
,然后软件返回楠
S对应的行X
至少包含一个楠
.
如果Mdl。DistributionNames
不是“mn”
,则软件将忽略楠
估计误分类成本和后验概率时的值。具体而言,软件通过忽略与缺失预测值对应的因素来计算给定类别预测值的条件密度。
为指定的预测器分布“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)
).
A.错分代价是分类器将一个观察标记为错误类的相对严重程度。
有两种类型的错误分类成本:真实和预期K是类的数量。
真实误分类成本——一个K——- - - - - -K矩阵,其中元素(我,J)表示将观测结果预测为类的误分类代价J如果它真正的阶级是我.软件将误分类成本储存在物业中Mdl。成本
,并将其用于计算。默认情况下,Mdl.成本(i,j)
=1如果我
≠J
,Mdl.成本(i,j)
=0如果我
=J
. 换句话说,成本是0
正确分类及1.
任何不正确的分类。
预期的误分类代价——一个K-维向量,其中元素K将观察结果分类的加权平均误分类成本是多少K,按类别后验概率加权。
换言之,软件将观察结果分类为与最低预期误分类成本相对应的类别。
这个后验概率是在给定数据的情况下,某一观察结果属于某一类的概率。
对于朴素贝叶斯,分类的后验概率K对于给定的观测(x1.、……xP)是
哪里:
在课堂上给出预测器的条件关节密度吗K.Mdl。DistributionNames
存储预测器的分布名称。
π(Y=K)是类先验概率分布。Mdl。Prior
存储先前的分发。
为预测者的联合密度。这些类是离散的,所以
这个先验概率类的相对频率是假定的相对频率,该类的观测值在总体中出现。
这个函数完全支持高数组。金宝app通过此功能,可以使用在内存中或高数据上训练的模型。
有关更多信息,请参见高阵.
使用注意事项及限制:
使用saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB编码器)为预测
函数。通过使用保存一个训练过的模型saveLearnerForCoder
.定义一个入口点函数,通过使用loadLearnerForCoder
并调用预测
函数。然后使用codegen
为入口点函数生成代码。
要为predict生成单精度的C/ c++代码,请指定name-value参数“数据类型”、“单”
当你打电话给loadLearnerForCoder
函数。
这个表格包含关于的参数的注释预测
.表中未包含的参数完全支持。金宝app
论点 | 笔记和局限性 |
---|---|
Mdl |
有关模型对象的使用说明和限制,请参见代码生成的 |
X |
|
有关更多信息,请参见代码生成简介.
您有一个连接到MATLAB-Befehl entspricht:
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus。Webbrowser unterstützen keine MATLAB-Befehle。
你也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区站点不适合您所在位置的访问。