主要内容

ClassificationNaiveBayes

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

描述

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

创建

创建一个ClassificationNaiveBayes对象的使用fitcnb

属性

展开全部

预测性能

此属性是只读的。

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

此属性是只读的。

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

如果模型对分类变量使用哑变量编码,则ExpandedPredictorNames包括描述扩展变量的名称。否则,ExpandedPredictorNames是相同的PredictorNames

此属性是只读的。

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

数据类型:|

此属性是只读的。

多元多项式的水平,指定为单元阵列。的长度CategoricalLevels等于预测者的数目(大小(X, 2))。

的细胞CategoricalLevels对应于您指定为的预测器“mvmn”培训期间,也就是他们有一个多变量多项分布。不符合多元多项分布细胞是空的([])。

如果预测j是多元多项,然后CategoricalLevels {j}是预测的所有不同值的列表j在样例。为NaNs是删除独特的(X (:, j))

此属性是只读的。

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

预测分布特性

此属性是只读的。

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

价值 描述
“内核” 核平滑密度估计
“百万” 多项分布。如果您指定,那么所有的功能都是多项分布组件。因此,你可以不包括“百万”作为一个字符串数组的一个元素或特征向量的单元阵列。有关详细信息,请参阅估计概率的多项分布
“mvmn” 多变量多项分布。有关详细信息,请参阅多元多项式分布的估计概率
“正常” 正态(高斯)分布

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

例:“百万”

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

数据类型:烧焦||细胞

此属性是只读的。

分布参数估计值,指定为单元阵列。DistributionParametersK-通过-D单元数组,其中单元格(k,d)包含了预测的情况下,分布参数估计d在课堂上k。行的顺序对应于属性中类的顺序一会,而谓词的顺序对应于的列的顺序X

如果类k有预测没有意见j,那么{分布k,j}是空的 ([])。

的元素DistributionParameters取决于预测因子的分布。中的值DistributionParameters {k,j}

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

此属性是只读的。

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

该表描述了支持的内核平滑类型。万博1manbetx{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”、“正常”}

数据类型:烧焦||细胞

此属性是只读的。

内核平滑密度支持,指定为单元数组。万博1manbetx的长度万博1manbetx等于预测者的数目(大小(X, 2))。的细胞代表的区域,其fitcnb应用核密度。如果单元格为空([]), 然后fitcnb没有将核分布拟合到相应的预测器。

此表描述了支持的选项。万博1manbetx

价值 描述
1×2数字行向量 例如,密度支持应用于指定万博1manbetx的边界(L U),其中lU被有限分别降低和上限。
“积极” 密度支持适用于所有正实值万博1manbetx。
“无限” 密度支持适用于所有的实际万博1manbetx值。

此属性是只读的。

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

宽度(k,j)是内核平滑预测的密度内核平滑窗口宽度j类中k为NaN■在列j表明,fitcnb不符合预测因子j使用核密度。

响应特性

此属性是只读的。

在训练模型中使用的唯一的类名,指定为绝对或字符阵列,逻辑或数字载体,或字符向量的单元阵列。

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

数据类型:明确的|烧焦||逻辑||细胞

此属性是只读的。

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

数据类型:烧焦|

此属性是只读的。

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

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

数据类型:||逻辑|烧焦||细胞|明确的

训练属性

此属性是只读的。

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

的字段ModelParameters通过使用点符号。例如,使用访问内核支持万博1manbetxMdl.ModelParameters.万博1manbetxSupport

此属性是只读的。

训练观察中存储的训练数据数XY,指定为数值标量。

先验概率,指定为数值向量。元件的顺序之前的元素Mdl.ClassNames

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
'Logit模型' 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 = '分对数'

数据类型:烧焦||函数处理

对象函数

紧凑 减少朴素贝叶斯分类器的大小
crossval 交叉验证朴素贝叶斯分类器
边缘 对于朴素贝叶斯分类分级刃
logp 登录无条件概率密度朴素贝叶斯分类器
失利 对于朴素贝叶斯分类分级损失
保证金 朴素贝叶斯分类器的分类裕度
partialDependence 计算部分依赖
plotPartialDependence 创建局部依赖图(PDP)和个体条件期望(ICE)地块
预测 使用朴素贝叶斯分类器对观测值进行分类
resubEdge 朴素贝叶斯分类器的分类边缘替换
resubLoss 对于朴素贝叶斯分类器Resubstitution分类损失
resubMargin Resubstitution分类利润率朴素贝叶斯分类器
resubPredict 使用朴素贝叶斯分类器对观测值进行分类

例子

全部收缩

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

加载fisheriris数据集创建。X作为包含150和虹膜4次花瓣测量的数值矩阵。创造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' '} DistributionParameters: {3x4 cell}属性、方法

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

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

Mdl.ClassNames
ANS =3X1细胞{ 'setosa'} { '云芝'} { '锦葵'}
Mdl.Prior
ANS =1×30.3333 0.3333 0.3333

类先验概率的顺序Mdl.Prior对应于类的顺序Mdl.ClassNames。默认情况下,先验概率是在数据中的类的相应的相对的频率。或者,你可以调用时设置的先验概率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]类名:{'b' 'g'} ScoreTransform: 'none'属性,方法

CVMdlClassificationPartitionedModel交叉验证,朴素贝叶斯分类器。或者,您可以交叉验证一个训练过的ClassificationNaiveBayes通过将其传递给crossval

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

CVMdl.Trained {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] Hastie的特雷弗,罗伯特·蒂希雷尼,和Jerome弗里德曼。统计学习的要素:数据挖掘、推理和预测。第2版​​。斯普林格系列统计。纽约:施普林格,2009年https://doi.org/10.1007/978-0-387-84858-7。

Manning, Christopher D., Prabhakar Raghavan和Hinrich Schutze。信息检索导论,纽约:剑桥大学出版社,2008年。

扩展功能

介绍了R2014b