朴素贝叶斯分类用于多类分类
ClassificationNaiveBayes
是一个朴素贝叶斯多类学习分类器。训练有素的ClassificationNaiveBayes
分类器存储训练数据、参数值、数据分布和先验概率。使用这些分类器来执行诸如估计再替换预测之类的任务(参见resubPredict
)和预测新数据的标签或后验概率(见预测
)。
创建一个ClassificationNaiveBayes
对象fitcnb
。
PredictorNames
- - - - - -预测的名字该属性是只读的。
预测器名称,指定为字符向量的单元数组。元素的顺序PredictorNames
对应于预测器名称在训练数据中出现的顺序X
。
ExpandedPredictorNames
- - - - - -扩展的预测器名称该属性是只读的。
扩展的预测器名称,指定为字符向量的单元数组。
如果模型对分类变量使用虚拟变量编码,则ExpandedPredictorNames
包括描述展开变量的名称。否则,ExpandedPredictorNames
等于PredictorNames
。
CategoricalPredictors
- - - - - -分类预测指数[]
该属性是只读的。
分类预测指标,指定为正整数向量。CategoricalPredictors
包含指示相应预测器是分类的索引值。索引值在1和之间p
,在那里p
是用于训练模型的预测器的数量。如果没有任何预测符是分类的,则此属性为空([]
)。
数据类型:单
|双
CategoricalLevels
- - - - - -多元多项式水平该属性是只读的。
多变量多项式级别,指定为单元格数组。的长度CategoricalLevels
等于预测因子的数目(大小(X, 2)
)。
的细胞CategoricalLevels
对应于您指定为的预测器“mvmn”
在训练过程中,它们具有多元多项式分布。不符合多元多项分布的单元格是空的([]
)。
如果预测j是多元多项式吗CategoricalLevels {
j}
是所有不同预测值的列表吗j在样本中。南
S从独特的(X (:, j))
。
X
- - - - - -Unstandardized预测该属性是只读的。
用于训练朴素贝叶斯分类器的非标准化预测器,指定为数字矩阵。每一行X
对应一个观测值,每一列对应一个变量。该软件排除包含至少一个缺失值的观测值,并从Y中删除相应的元素。
DistributionNames
- - - - - -预测分布“正常”
(默认)|“内核”
|“锰”
|“mvmn”
|字符向量的单元数组该属性是只读的。
预测器分布,指定为字符向量或字符向量的单元数组。fitcnb
使用预测器分布对预测器建模。此表列出了可用的发行版。
价值 | 描述 |
---|---|
“内核” |
核平滑密度估计 |
“锰” |
多项分布。如果你指定锰 ,则所有特征都是多项分布的组成部分。因此,不能包含“锰” 作为字符串数组或字符向量的单元数组的元素。有关详情,请参阅多项式分布的估计概率。 |
“mvmn” |
多元多项分布。有关详情,请参阅多元多项式分布的估计概率。 |
“正常” |
正态(高斯)分布 |
如果DistributionNames
是1 × 1P细胞数组的字符向量,然后fitcnb
为特性建模j使用in元素的分布j单元格数组的。
例子:“锰”
例子:{“内核”、“正常”、“内核”}
数据类型:字符
|字符串
|细胞
DistributionParameters
- - - - - -分布参数估计该属性是只读的。
分布参数估计值,指定为单元格数组。DistributionParameters
是一个K——- - - - - -DCell数组,其中Cell (k,d)包含预测器实例的分布参数估计d在课堂上k。行顺序与属性中类的顺序相对应一会
,并且预测符的顺序对应于列的顺序X
。
如果类k
没有预测结果吗j
,然后是{分布
是空的(k
,j
}[]
)。
的元素DistributionParameters
取决于预测因子的分布。该表描述了DistributionParameters {
。k
,j
}
预测器分布j | 预测器单元阵列的值j 和类k |
---|---|
内核 |
一个KernelDistribution 模型。使用单元格索引和点符号显示属性。例如,要显示第三类中预测器2的核密度的估计带宽,使用Mdl.DistributionParameters {3 2} .Bandwidth 。 |
锰 |
表示该标记的概率的标量j出现在课堂上k。有关详情,请参阅多项式分布的估计概率。 |
mvmn |
一种数字向量,包含每个可能级别的预测器的概率j在课堂上k。该软件按照所有唯一预测器级别的排序顺序对概率进行排序j(存储在属性中CategoricalLevels )。有关详细信息,请参见多元多项式分布的估计概率。 |
正常的 |
一个2 × 1的数值向量。第一个元素是样本均值第二个元素是样本标准差。有关详细信息,请参见正态分布估计量 |
内核
- - - - - -核平滑型“正常”
(默认)|“盒子”
|单元阵列|……该属性是只读的。
内核平滑类型,指定为内核名称或内核名称单元数组的名称。的长度内核
等于预测因子的数目(大小(X, 2)
)。内核{
j}
对应于预测器j并且包含一个描述核平滑类型的字符向量。如果单元格为空([]
),然后fitcnb
没有将核分布拟合到相应的预测器。
该表描述了支持的内核平滑类型。金宝app我{u}表示指示器函数。
价值 | 内核 | 公式 |
---|---|---|
“盒子” |
框(统一) |
|
“epanechnikov” |
Epanechnikov |
|
“正常” |
高斯 |
|
“三角形” |
三角 |
|
例子:“盒子”
例子:{“epanechnikov”、“正常”}
数据类型:字符
|字符串
|细胞
金宝app
- - - - - -内核平滑密度支持金宝app该属性是只读的。
内核平滑密度支持,指定为单元数组。金宝app的长度金宝app
等于预测因子的数目(大小(X, 2)
)。单元格代表的区域fitcnb
应用核密度。如果单元格为空([]
),然后fitcnb
没有将核分布拟合到相应的预测器。
该表描述了支持的选项。金宝app
价值 | 描述 |
---|---|
1 × 2的数字行向量 | 例如,密度支持适用于指定金宝app的边界(L U) ,在那里l 和U 分别为有限下界和有限上界。 |
“积极” |
密度支持适用于所有正实值金宝app。 |
“无限” |
密度支持适用于所有实值。金宝app |
宽度
- - - - - -核平滑窗宽该属性是只读的。
内核平滑窗口宽度,指定为数值矩阵。宽度
是一个K——- - - - - -P矩阵,K是数据中的类数,和P是预测因子的数目(大小(X, 2)
)。
宽度(
是核平滑窗宽度的核平滑密度的预测器k
,j
)j
内部类k
。南
列中的Sj
表明,fitcnb
不适合预测器j
用核密度。
一会
- - - - - -唯一的类名该属性是只读的。
训练模型中使用的唯一类名,指定为分类或字符数组、逻辑或数字向量或字符向量的单元数组。
一会
具有相同的数据类型Y
,并已K用于字符数组的元素(或行)。(该软件将字符串数组视为字符向量的单元格数组。)
数据类型:分类
|字符
|字符串
|逻辑
|双
|细胞
ResponseName
- - - - - -响应变量名称该属性是只读的。
响应变量名称,指定为字符向量。
数据类型:字符
|字符串
Y
- - - - - -类标签该属性是只读的。
用于训练朴素贝叶斯分类器的类标签,指定为分类或字符数组,逻辑或数字向量,或字符向量的单元数组。每一行Y
的对应行观察到的分类X
。
Y
中的数据具有相同的数据类型Y
用于训练模型。(该软件将字符串数组视为字符向量的单元格数组。)
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
|分类
ModelParameters
- - - - - -用于训练模型的参数值该属性是只读的。
参数值用于训练ClassificationNaiveBayes
模型,指定为对象。ModelParameters
包含参数值,例如用于训练朴素贝叶斯分类器的名称-值对参数值。
的属性ModelParameters
通过使用点表示法。例如,使用命令访问内核支持金宝appMdl.ModelParameters.金宝appSupport
。
NumObservations
- - - - - -训练观察数该属性是只读的。
在训练数据中存储的训练观测数X
和Y
,指定为数字标量。
之前
- - - - - -先验概率先验概率,用数字向量表示。元素的顺序之前
的元素对应Mdl。一会
。
fitcnb
将设置的先验概率归一化“之前”
名称-值对参数,以便总和(前)
=1
。
的价值之前
不影响最佳拟合模型。因此,可以进行重置之前
训练后Mdl
使用点符号。
例子:Mdl。Prior = [0.2 0.8]
数据类型:双
|单
W
- - - - - -观察权重该属性是只读的。
观察值权重,指定为具有相同行数的非负值向量Y
。每一项W
中相应观测值的相对重要性Y
。fitcnb
属性设置的值进行规范化“重量”
名称-值对参数,以便特定类中的权重之和等于该类的先验概率。
成本
- - - - - -误分类代价错误分类代价,指定为数值方阵,其中成本(i, j)
将一个点划分为类的代价是多少j
如果它的真实类是我
。行对应于真实的类,列对应于预测的类。的行和列的顺序成本
类的顺序对应一会
。
错误分类代价矩阵在对角线上必须为零。
的价值成本
不影响培训。你可以重置成本
训练后Mdl
使用点符号。
例子:Mdl。成本=[0 0.5 ; 1 0]
数据类型:双
|单
HyperparameterOptimizationResults
- - - - - -超参数交叉验证优化BayesianOptimization
对象|表格该属性是只读的。
超参数的交叉验证优化,指定为BayesianOptimization
对象或包含超参数和相关值的表。,则此属性是非空的“OptimizeHyperparameters”
在创建模型时,名称-值对参数是非空的。的价值HyperparameterOptimizationResults
取决于设置的优化器
字段中HyperparameterOptimizationOptions
结构。
的价值优化器 场 |
的价值HyperparameterOptimizationResults |
---|---|
“bayesopt” (默认) |
类别对象BayesianOptimization |
“gridsearch” 或“randomsearch” |
使用的超参数表,观察到的目标函数值(交叉验证损失),以及观察值从最低(最好)到最高(最差)的排序 |
ScoreTransform
- - - - - -分类评分转换“没有”
(默认)|“doublelogit”
|“invlogit”
|“ismax”
|分对数的
|函数处理|……分类分数转换,指定为字符向量或函数句柄。该表总结了可用的字符向量。
价值 | 描述 |
---|---|
“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
类标签Y
。fitcnb
假设每个预测器是独立的,并且默认情况下使用正态分布拟合每个预测器。
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%的数据。
完全和紧凑朴素贝叶斯模型不用于对新数据的预测。相反,使用它们通过传递来估计泛化误差CVMdl
来kfoldLoss
。
genError = kfoldLoss(CVMdl)
genError = 0.1852
平均而言,泛化误差约为19%。
您可以为预测器指定不同的条件分布,或者调整条件分布参数以减少泛化误差。
在令牌袋模型中,预测器的值jtoken的出现次数是否为非负数j在观察中。多项模型中的类别(箱)的数量是不同标记的数量(预测器的数量)。
朴素贝叶斯是一种将密度估计应用于数据的分类算法。
该算法利用贝叶斯定理,并且(天真地)假设给定类,预测器是条件独立的。虽然这个假设在实践中经常被违背,但朴素贝叶斯分类器倾向于产生对有偏类密度估计具有鲁棒性的后验分布,特别是当后验为0.5(决策边界)时。[1]。
朴素贝叶斯分类器将观察值分配给最可能的类(换句话说,就是最大后验决策规则)。显式地,该算法采取以下步骤:
估计每个类别中预测器的密度。
根据贝叶斯规则对后验概率进行建模。也就是说,对所有人来说k= 1,…,K,
地点:
Y是与观测值的类指数相对应的随机变量。
X1、……XP是观察的随机预测因子。
一个类索引的先验概率是多少k。
通过估计每个类的后验概率对观测值进行分类,然后将观测值分配到产生最大后验概率的类中。
如果预测因子组成多项分布,则后验概率 在哪里 是多项式分布的概率质量函数。
If预测变量j
具有条件正态分布(参见DistributionNames
属性),软件通过计算特定类别的加权均值和加权标准差的无偏估计来拟合数据的分布。对于每个班级k:
预测因子的加权平均值j是
在哪里w我重量是用来观察的吗我。该软件对一个类中的权重进行规范化,使它们之和等于该类的先验概率。
加权标准差的无偏估计量j是
在哪里z1 |k权重的总和在类内吗k和z2 |k权值的平方和在类内吗k。
如果所有预测变量构成条件多项分布(参见DistributionNames
属性),则该软件适合使用Bag-of-Tokens模型。软件存储令牌的概率j
出现在课堂上k
在财产中DistributionParameters {
。加性平滑[2],则估计概率为k
,j
}
地点:
哪个是token出现的加权次数j在课堂上k。
nk课堂上观察的次数是多少k。
重量是用来观察的吗我。该软件将类中的权重归一化,使它们之和等于该类的先验概率。
所有标记在类中出现的总加权次数是多少k。
If预测变量j
具有条件多元多项分布(参见DistributionNames
属性),软件遵循以下程序:
该软件收集唯一级别的列表,将排序列表存储在CategoricalLevels
,并将每一层视为一个箱子。预测器和类的每一个组合都是一个独立的、独立的多项随机变量。
对于每个班级k中存储的列表对每个分类级别的实例进行计数CategoricalLevels {
。j
}
该软件存储预测器的概率j
在课堂上k
有水平l在财产中DistributionParameters {
,适用于所有级别k
,j
}CategoricalLevels {
。加性平滑[2],则估计概率为j
}
地点:
哪个是哪个预测器的加权观测数j=l在课堂上k。
nk课堂上观察的次数是多少k。
如果xij=l,否则为0。
重量是用来观察的吗我。该软件将类中的权重归一化,使它们之和等于该类的先验概率。
米j预测器中不同层次的数量是多少j。
米k是课堂上观察的加权数吗k。
哈斯蒂、特雷弗、罗伯特·蒂布希拉尼和杰罗姆·弗里德曼。统计学习的要素:数据挖掘、推断和预测。第2版。施普林格系列统计。纽约,纽约:b施普林格,2009。https://doi.org/10.1007/978 - 0 - 387 - 84858 - 7。
[2] Manning, Christopher D., Prabhakar Raghavan和Hinrich sch
使用注意事项和限制:
的预测
函数支持代码生成。金宝app
当你训练朴素贝叶斯模型时fitcnb
,则适用以下限制。
的值“DistributionNames”
名称-值对参数不能包含“锰”
。
的值“ScoreTransform”
名称-值对参数不能是匿名函数。
有关更多信息,请参见代码生成简介。
您点击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
你亦可选择下列网址:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。