主要内容

ClassificationNaiveBayes

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

描述

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

创建

创建一个ClassificationNaiveBayes对象,使用fitcnb

属性

全部展开

预测性能

此属性是只读的。

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

此属性是只读的。

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

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

此属性是只读的。

分类预测指标,指定为正整数向量。CategoricalPredictors包含与包含分类预测器的预测器数据列对应的索引值。如果没有一个预测符是分类的,则此属性为空([]).

数据类型:|

此属性是只读的。

多元多项式水平,指定为单元格数组。的长度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没有将核分布拟合到相应的预测器。

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

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

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”、“正常”}

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

此属性是只读的。

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

该表描述了支持的选项。金宝app

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

此属性是只读的。

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

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

响应特性

此属性是只读的。

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

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

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

此属性是只读的。

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

数据类型:字符|字符串

此属性是只读的。

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

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

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

训练属性

此属性是只读的。

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

访问字段ModelParameters用点表示法。例如,访问内核支持使用金宝appMdl.ModelParameters.金宝appSupport

此属性是只读的。

中存储的训练数据中的训练观察数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 = 'logit'

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

对象的功能

紧凑的 减小朴素贝叶斯分类器的大小
crossval 交叉验证朴素贝叶斯分类器
边缘 朴素贝叶斯分类器的分类边
logp 朴素贝叶斯分类器的对数无条件概率密度
损失 朴素贝叶斯分类器的分类损失
保证金 朴素贝叶斯分类器的分类边缘
partialDependence 计算部分依赖关系
plotPartialDependence 创建部分依赖图(PDP)和个别条件期望图(ICE)
预测 使用朴素贝叶斯分类器对观测数据进行分类
resubEdge 朴素贝叶斯分类器的再代分类边
resubLoss 朴素贝叶斯分类器的重代分类损失
resubMargin 朴素贝叶斯分类器的重代分类边缘
resubPredict 使用朴素贝叶斯分类器对观测数据进行分类

例子

全部折叠

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

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

负载fisheririsX = meas;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:end);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(cvdl)
genError = 0.1852

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

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

更多关于

全部展开

算法

全部展开

参考文献

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

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

扩展功能

在R2014b中引入