主要内容

ClassificationNaiveBayes

多类分类的朴素贝叶斯分类

描述

ClassificationNaiveBayes是一个朴素贝叶斯多类学习分类器。训练有素的ClassificationNaiveBayes分类器存储训练数据、参数值、数据分布和先验概率。使用这些分类器来执行诸如估计再替代预测等任务resubPredict)和预测标签或新数据的后验概率(参见预测).

创建

创建一个ClassificationNaiveBayes对象的使用fitcnb

属性

全部展开

预测性能

此属性是只读的。

预测器名称,指定为字符向量的单元格数组。元素的顺序PredictorNames对应于预测器名称在训练数据中出现的顺序X

此属性是只读的。

扩展的预测器名称,指定为字符向量的单元格数组。

如果模型对类别变量使用哑变量编码,则ExpandedPredictorNames包括描述展开变量的名称。否则,ExpandedPredictorNamesPredictorNames

此属性是只读的。

分类预测指标,指定为正整数的向量。CategoricalPredictors包含指示相应的预测器是分类的索引值。索引值在1和之间p,在那里p用于训练模型的预测器的数量。如果没有一个预测器是绝对的,则此属性为空([]).

数据类型:|

此属性是只读的。

多变量多项级别,指定为单元格数组。的长度CategoricalLevels等于预测器的数量(大小(X, 2)).

的细胞CategoricalLevels与指定为的预测器对应“mvmn”在训练过程中,即它们具有多元多项式分布。不符合多元多项式分布的单元格为空([]).

如果预测j多元多项式吗CategoricalLevels {j是否所有不同的预测值的列表j在样例。S被移除独特的(X (:, j))

此属性是只读的。

用于训练朴素贝叶斯分类器的非标准化预测器,指定为数值矩阵。每一行的X对应一个观察结果,每一列对应一个变量。该软件排除包含至少一个缺失值的观测值,并从Y中删除相应的元素。

预测分布属性

此属性是只读的。

预测分布,指定为字符向量或字符向量的单元数组。fitcnb使用预测器分布对预测器进行建模。该表列出了可用的发行版。

价值 描述
“内核” 核平滑密度估计
“锰” 多项分布。如果您指定,则所有特征都是多项式分布的分量。因此,您不能包含“锰”作为字符串数组或字符向量单元格数组的元素。有关详细信息,请参见多项式分布的估计概率
“mvmn” 多元多项式分布。有关详细信息,请参见多元多项式分布的估计概率
“正常” 正态(高斯)分布

如果DistributionNames是1 -P单元格数组的字符向量,然后fitcnb模型的特性j使用元素中的分布j单元格数组的。

例子:“锰”

例子:{“内核”、“正常”、“内核”}

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

此属性是只读的。

分布参数估计,指定为单元格数组。DistributionParameters是一个K——- - - - - -D单元格数组,其中单元格(kd)包含预测器实例的分布参数估计d在课堂上k.行顺序对应于属性中类的顺序一会,预测器的顺序对应于X

如果类k没有观察到的预测j,那么{分布kj是空的([]).

的元素DistributionParameters取决于预测器的分布。该表描述了DistributionParameters {kj

分布的预测j 用于预测器的单元格数组的值j和类k
内核 一个KernelDistribution模型。使用单元格索引和点表示法显示属性。例如,要显示第三类中预测器2的核密度的估计带宽,使用Mdl.DistributionParameters {3 2} .Bandwidth
一个表示该符号概率的标量j出现在课堂上k.有关详细信息,请参见多项式分布的估计概率
mvmn 一个数字向量,包含每一个可能的预测水平的概率j在课堂上k.该软件根据预测器的所有唯一级别的排序顺序对概率进行排序j(存储在属性中CategoricalLevels).有关更多细节,请参见多元多项式分布的估计概率
正常的 一个2乘1的数字向量。第一个元素是样本均值,第二个元素是样本标准差。有关更多细节,请参见正态分布估计

此属性是只读的。

内核平滑器类型,指定为内核名称或内核名称的单元格数组。的长度内核等于预测器的数量(大小(X, 2)).内核{j对应的预测j并包含描述内核平滑器类型的字符向量。如果单元格为空([]),然后fitcnb没有将核分布拟合到相应的预测器。

该表描述了支持的内核平滑器类型。u}表示指示函数。

价值 内核 公式
“盒子” 框(统一)

f x 0.5 | x | 1

“epanechnikov” Epanechnikov

f x 0.75 1 x 2 | x | 1

“正常” 高斯

f x 1 2 π 经验值 0.5 x 2

“三角形” 三角

f x 1 | x | | x | 1

例子:“盒子”

例子:{“epanechnikov”、“正常”}

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

此属性是只读的。

内核平滑器密度支持,指定为单元格数组。的长度支持等于预测器的数量(大小(X, 2)).这些单元格表示fitcnb应用核密度。如果单元格为空([]),然后fitcnb没有将核分布拟合到相应的预测器。

该表描述了支持的选项。

价值 描述
1 × 2的数字行向量 例如,密度支持应用于指定的边界(L U),在那里l而且U分别是有限下界和上界。
“积极” 密度支持适用于所有正实值。
“无限” 密度支持适用于所有实值。

此属性是只读的。

内核平滑器窗口宽度,指定为数值矩阵。宽度是一个K——- - - - - -P矩阵,K数据中的类的数量,和P是预测因子的数量(大小(X, 2)).

宽度(kj核平滑窗宽是否为核平滑密度的预测器j内部类k在列j表明,fitcnb不符合预测j利用核密度。

响应特性

此属性是只读的。

训练模型中使用的惟一类名,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。

一会具有与?相同的数据类型Y,并已K字符数组的元素(或行)。(该软件将字符串数组视为字符向量的单元格数组。)

数据类型:分类|字符|字符串|逻辑||细胞

此属性是只读的。

响应变量名,指定为字符向量。

数据类型:字符|字符串

此属性是只读的。

用于训练朴素贝叶斯分类器的类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。每一行的Y的对应行的观察分类X

Y中的数据类型与Y用于训练模型。(该软件将字符串数组视为字符向量的单元格数组。)

数据类型:||逻辑|字符|字符串|细胞|分类

训练属性

此属性是只读的。

用于训练的参数值ClassificationNaiveBayes模型,指定为对象。ModelParameters包含参数值,例如用于训练朴素贝叶斯分类器的名值对参数值。

访问的属性ModelParameters用点表示法。例如,使用访问内核支持Mdl.ModelParameters.Support

此属性是只读的。

存储的训练数据中的训练观察数X而且Y,指定为数值标量。

先验概率,用数字向量表示。元素的顺序之前对应于的元素Mdl。一会

fitcnb的先验概率归一化“之前”名称-值对参数,因此总和(前)1

的价值之前不影响最佳拟合模型。因此,可以进行重置之前训练后Mdl使用点符号。

例子:Mdl。Prior = [0.2 0.8]

数据类型:|

此属性是只读的。

观察权值,指定为具有相同行数的非负值的向量Y.中的每个条目W中相应观察的相对重要性Yfitcnb对象设置的值规范化“重量”名称-值对参数,以便特定类中的权重之和为该类的先验概率。

分类器性能

错误分类代价,指定为数值方阵,其中成本(i, j)将一个点分类到类的成本是多少j如果它真正的阶级是.行对应真正的类,列对应预测的类。的行和列的顺序成本中的类的顺序一会

错误分类的代价矩阵在对角线上必须为零。

的价值成本不影响培训。你可以重置成本训练后Mdl使用点符号。

例子:Mdl。成本=[0 0.5 ; 1 0]

数据类型:|

此属性是只读的。

超参数的交叉验证优化,指定为BayesianOptimization对象或超参数和关联值的表。属性为非空“OptimizeHyperparameters”在创建模型时,名称-值对参数是非空的。的价值HyperparameterOptimizationResults取决于的设置优化器字段HyperparameterOptimizationOptions结构。

的价值优化器 的价值HyperparameterOptimizationResults
“bayesopt”(默认) 对象的类BayesianOptimization
“gridsearch”“randomsearch” 使用的超参数表,观测到的目标函数值(交叉验证损失),以及观测值从最低(最好)到最高(最差)的排名

分类分数转换,指定为字符向量或函数句柄。该表总结了可用的字符向量。

价值 描述
“doublelogit” 1 / (1 +e2x
“invlogit” 日志(x/ (1 -x))
“ismax” 将分数最大的类的分数设置为1,并将所有其他类的分数设置为0
“分对数” 1 / (1 +e- - - - - -x
“没有”“身份” x(转换)
“标志” 1x< 0
为0x= 0
1x> 0
“对称” 2x- 1
“symmetricismax” 将分数最大的类的分数设置为1,并将所有其他类的分数设置为-1
“symmetriclogit” 2 / (1 +e- - - - - -x) - 1

对于一个MATLAB®函数或您定义的函数,使用其函数句柄进行评分转换。函数句柄必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。

例子:Mdl。ScoreTransform = '分对数'

数据类型:字符|字符串|函数处理

对象的功能

紧凑的 减小机器学习模型的尺寸
compareHoldout 使用新数据比较两种分类模型的准确性
crossval 交叉验证机器学习模型
边缘 朴素贝叶斯分类器的分类边
incrementalLearner 将朴素贝叶斯分类模型转化为增量学习器
石灰 局部可解释模型不可知解释(LIME)
logp 朴素贝叶斯分类器的对数无条件概率密度
损失 朴素贝叶斯分类器的分类损失
保证金 朴素贝叶斯分类器的分类边值
partialDependence 计算部分依赖
plotPartialDependence 创建偏依赖图(PDP)和个体条件期望图(ICE)
预测 使用朴素贝叶斯分类器对观测数据进行分类
resubEdge Resubstitution分类边缘
resubLoss Resubstitution分类损失
resubMargin Resubstitution分类保证金
resubPredict 使用训练过的分类器对训练数据进行分类
沙普利 沙普利值
testckfold 通过重复交叉验证比较两种分类模型的准确性

例子

全部折叠

为Fisher的虹膜数据集创建一个朴素贝叶斯分类器。然后,在训练分类器后指定先验概率。

加载fisheriris数据集。创建X作为一个数字矩阵,其中包含了150个鸢尾的四个花瓣的测量值。创建Y作为包含相应虹膜种类的字符向量的单元数组。

负载fisheririsX =量;Y =物种;

使用预测器训练朴素贝叶斯分类器X和类标签Yfitcnb假设每个预测器是独立的,默认使用正态分布拟合每个预测器。

Mdl = fitcnb (X, Y)
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell}属性,方法

Mdl是一个培训ClassificationNaiveBayes分类器。的一些Mdl属性将出现在命令窗口中。

显示属性Mdl使用点符号。例如,显示类名和先验概率。

Mdl。一会
ans =3 x1细胞{'setosa'} {'versicolor'} {'virginica'}
Mdl。Prior
ans =1×30.3333 0.3333 0.3333

类先验概率的顺序Mdl。Prior中的类的顺序Mdl。一会.默认情况下,先验概率是数据中各类的相对频率。或者,您可以在调用时设置先验概率fitcnb通过使用'之前的名称-值对的论点。

使用点表示法训练分类器后设置先验概率。例如,将先验概率分别设置为0.5、0.2和0.3。

Mdl。Prior = [0.5 0.2 0.3];

您现在可以使用这个经过训练的分类器来执行额外的任务。例如,您可以使用预测或者使用交叉验证分类器crossval

训练和交叉验证一个朴素贝叶斯分类器。fitcnb默认情况下实现10次交叉验证。然后,估计交叉验证的分类误差。

加载电离层数据集。去掉前两个稳定性预测因子。

负载电离层X = X(:, 3:结束);rng (“默认”%的再现性

使用预测器训练和交叉验证一个朴素贝叶斯分类器X和类标签Y.推荐的做法是指定类名。fitcnb假设每个预测因子都是条件正态分布的。

CVMdl = fitcnb (X, Y,“类名”,{“b”‘g’},“CrossVal”“上”
CVMdl = ClassificationPartitionedModel CrossValidatedModel: 'NaiveBayes' PredictorNames: {1x32 cell} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none'属性,方法

CVMdl是一个ClassificationPartitionedModel交叉验证的朴素贝叶斯分类器。或者,你可以交叉验证一个训练有素的ClassificationNaiveBayes通过传递它来建模crossval

显示第一次训练折叠CVMdl使用点符号。

CVMdl。训练有素的{1}
ans = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell}属性,方法

每条折线都是CompactClassificationNaiveBayes模型训练了90%的数据。

完整和紧凑的朴素贝叶斯模型不用于对新数据的预测。相反,使用它们通过传递来估计泛化误差CVMdlkfoldLoss

genError = kfoldLoss (CVMdl)
genError = 0.1852

平均而言,泛化误差约为19%。

可以为预测器指定不同的条件分布,或调优条件分布参数以减少泛化误差。

更多关于

全部展开

算法

全部展开

参考文献

[1]哈斯蒂,特雷弗,罗伯特·蒂布希拉尼,杰罗姆·弗里德曼。统计学习的要素:数据挖掘,推断和预测.第2版,施普林格统计系列。纽约,纽约:施普林格,2009。https://doi.org/10.1007/978 - 0 - 387 - 84858 - 7。

[2]曼宁,克里斯托弗·D,普拉巴卡尔·拉加万,辛里奇Schütze。信息检索导论纽约:剑桥大学出版社,2008。

扩展功能

版本历史

介绍了R2014b

Baidu
map