主要内容

ClassificationNaiveBayes

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

描述

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

创建

创建一个ClassificationNaiveBayes对象fitcnb

属性

全部展开

预测性能

该属性是只读的。

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

该属性是只读的。

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

如果模型对分类变量使用虚拟变量编码,则ExpandedPredictorNames包括描述展开变量的名称。否则,ExpandedPredictorNames等于PredictorNames

该属性是只读的。

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

数据类型:|

该属性是只读的。

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

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

如果预测j是多元多项式吗CategoricalLevels {j}是所有不同预测值的列表吗j在样本中。S从独特的(X (:, j))

该属性是只读的。

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

预测器分布特性

该属性是只读的。

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

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

如果DistributionNames是1 × 1P细胞数组的字符向量,然后fitcnb为特性建模j使用in元素的分布j单元格数组的。

例子:“锰”

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

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

该属性是只读的。

分布参数估计值,指定为单元格数组。DistributionParameters是一个K——- - - - - -DCell数组,其中Cell (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),在那里lU分别为有限下界和有限上界。
“积极” 密度支持适用于所有正实值金宝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

该属性是只读的。

在训练数据中存储的训练观测数XY,指定为数字标量。

先验概率,用数字向量表示。元素的顺序之前的元素对应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'

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

对象的功能

紧凑的 减少机器学习模型的大小
compareHoldout 使用新数据比较两种分类模型的精度
crossval 交叉验证机器学习模型
边缘 朴素贝叶斯分类器的分类边
incrementalLearner 将朴素贝叶斯分类模型转化为增量学习模型
石灰 局部可解释模型不可知论解释(LIME)
logp 朴素贝叶斯分类器的对数无条件概率密度
损失 朴素贝叶斯分类器的分类损失
保证金 朴素贝叶斯分类器的分类边界
partialDependence 计算部分相关性
plotPartialDependence 创建部分依赖图(PDP)和个体条件期望图(ICE)
预测 使用朴素贝叶斯分类器对观测值进行分类
resubEdge 再取代分类边
resubLoss 再取代分类损失
resubMargin 再取代分类余量
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' '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(CVMdl)
genError = 0.1852

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

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

更多关于

全部展开

算法

全部展开

参考文献

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

[2] Manning, Christopher D., Prabhakar Raghavan和Hinrich sch信息检索概论,纽约:剑桥大学出版社,2008。

扩展功能

在R2014b中引入