训练多类朴素贝叶斯模型
返回一个多类朴素贝叶斯模型(Mdl
= fitcnb (资源描述
,ResponseVarName
)Mdl
),由表中预测者训练资源描述
和变量中的类标签资源描述。ResponseVarName
.
载入费雪的虹膜数据集。
负载fisheririsX =量(:,3:4);Y =物种;汇总(Y)
价值计数百分比刚毛50 33.33%杂色50 33.33%维吉尼亚50 33.33%
该软件可以使用朴素贝叶斯方法对两个以上类的数据进行分类。
训练朴素贝叶斯分类器。最好的做法是指定类的顺序。
Mdl = fitcnb (X, Y,“类名”, {“塞托萨”,“多色的”,“维吉尼亚”})
Mdl=ClassificationNaiveBayes ResponseName:'Y'分类预测值:[]类名:{'setosa''versicolor''virginica'}ScoreTransform:'none'NumObservations:150个分发名:{'normal''normal'}分发参数:{3x2 cell}属性、方法
Mdl
是一个培训分类朴素贝叶斯
分类器。
默认情况下,软件使用具有一些平均值和标准偏差的高斯分布对每个类别内的预测分布进行建模。使用点符号显示特定高斯拟合的参数,例如,显示类别内第一个特征的拟合setosa
.
(Mdl setosaIndex =比较字符串。一会,“塞托萨”);估计= Mdl。DistributionParameters {setosaIndex 1}
估计=2×11.4620 - 0.1737
的意思是1.4620
标准差是0.1737
.
绘制高斯曲线。
图gscatter (X (: 1), (:, 2), Y);甘氨胆酸h =;cxlim = h.XLim;cylim = h.YLim;持有在Params = cell2mat (Mdl.DistributionParameters);μ= Params (2 * (1:3) 1, 1:2);提取平均值σ= 0 (2,2,3);为Sigma(:,:,j) = diag(Params(2*j,:)).^2;%创建对角协方差矩阵xlim = Mu(j,1) + 4*[-1 1]*根号(Sigma(1,1,j));ylim = Mu(j,2) + 4*[-1 1]*√(Sigma(2,2,j));f = @ (x, y) arrayfun (@ (x0, y0) mvnpdf (x0 y0,μ(j,:),σ(:,:,j)), x, y);fcontour (f, [xlim ylim])%绘制多元正态分布的轮廓结束h、 XLim=cxlim;h.YLim=cylim;标题(朴素贝叶斯分类器- Fisher虹膜数据)包含(“花瓣长度(厘米)”) ylabel (“花瓣宽度(cm)”)传奇(“塞托萨”,“多色的”,“维吉尼亚”)举行从
您可以使用名称-值对参数更改默认发行版“DistributionNames”
.例如,如果一些预测因子是分类的,那么您可以使用“DistributionNames”、“mvmn”
.
为费雪的虹膜数据集构造朴素贝叶斯分类器。此外,指定训练期间的先验概率。
载入费雪的虹膜数据集。
负载fisheririsX =量;Y =物种;一会= {“塞托萨”,“多色的”,“维吉尼亚”};%课堂秩序
X
是一个数字矩阵,包含四个花瓣测量150鸢尾。Y
是包含相应虹膜种类的字符向量的细胞阵列。
默认情况下,先验类概率分布是数据集中类的相对频率分布。在这种情况下,每种物种的先验概率是33%。然而,假设你知道在种群中有50%的鸢尾是刚毛鸢尾,20%是花斑鸢尾,30%是弗吉尼亚鸢尾。您可以通过在训练期间指定此分布为先验概率来合并此信息。
训练朴素贝叶斯分类器。指定类的顺序和先验类的概率分布。
Prior = [0.5 0.2 0.3];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
是一个培训分类朴素贝叶斯
分类器及其某些属性将显示在命令窗口中。软件将预测值视为独立的给定类别,默认情况下,使用正态分布拟合预测值。
朴素贝叶斯算法在训练过程中不使用先验类概率。因此,您可以在训练后使用点符号指定先前的类概率。例如,假设您想要查看使用默认先验类概率的模型和使用不同的模型之间的性能差异之前
.
建立一个新的朴素贝叶斯模型基于Mdl
,并规定先验类概率分布为经验类分布。
defaultPriorMdl = Mdl;FreqDist = cell2table(汇总(Y));defaultPriorMdl。之前=FreqDist{:,3};
软件将先验类的概率归一化求和为1
.
用10倍交叉验证估计两个模型的交叉验证误差。
rng (1);%为了再现性defaultCVMdl=crossval(defaultPriorMdl);defaultLoss=kfoldLoss(defaultCVMdl)
defaultLoss = 0.0533
CVMdl = crossval (Mdl);损失= kfoldLoss (CVMdl)
损失=0.0340
Mdl
性能优于defaultPriorMdl
.
载入费雪的虹膜数据集。
负载fisheririsX =量;Y =物种;
使用每个预测器训练朴素贝叶斯分类器。最好的做法是指定类的顺序。
Mdl1=fitcnb(X,Y,...“类名”, {“塞托萨”,“多色的”,“维吉尼亚”})
Mdl1=ClassificationNaiveBayes ResponseName:'Y'分类预测值:[]类名:{'setosa''versicolor''virginica'}ScoreTransform:'none'NumObservations:150个分布名:{'normal''normal''normal''normal'}分布参数:{3x4 cell}属性、方法
Mdl1。DistributionParameters
ans =3×4单元阵列{2x1 double}{2x1 double}{2x1 double}{2x1 double}{2x1 double}{2x1 double}{2x1 double}{2x1 double}{2x1 double}{2x1 double}{2x1 double}
Mdl1。DistributionParameters {1,2}
ans =2×13.4280 - 0.3791
默认情况下,软件将预测值在每个类别中的分布建模为高斯分布,具有一定的平均值和标准偏差。有四个预测值和三个类别级别。每个单元格位于Mdl1。DistributionParameters
对应一个数值向量,其中包含各分布的均值和标准差,如刚毛鸢尾萼片宽度的均值和标准差为3.4280
和0.3791
,分别。
估计混淆矩阵Mdl1
.
isLabels1 = resubPredict (Mdl1);ConfusionMat1 = confusionchart (Y, isLabels1);
元素(j,k)的混淆矩阵图表示该软件分类的观察结果的数量k,但他们确实在课堂上j根据数据。
使用预测因子1和2(萼片长度和宽度)的高斯分布和预测因子3和4(花瓣长度和宽度)的默认正态核密度重新训练分类器。
Mdl2 = fitcnb (X, Y,...“DistributionNames”, {“正常”,“正常”,“内核”,“内核”},...“类名”, {“塞托萨”,“多色的”,“维吉尼亚”});Mdl2.分布参数{1,2}
ans =2×13.4280 - 0.3791
软件不会根据内核密度训练参数。相反,软件会选择一个最佳宽度。属性指定宽度“宽度”
名称-值对的论点。
估计混淆矩阵Mdl2
.
isLabels2 = resubPredict (Mdl2);ConfusionMat2 = confusionchart (Y, isLabels2);
基于混淆矩阵,这两个分类器在训练样本中表现相似。
载入费雪的虹膜数据集。
负载fisheririsX =量;Y =物种;rng (1);%为了再现性
使用默认选项和交叉验证朴素贝叶斯分类器k倍交叉验证。最好的做法是指定类的顺序。
CVMdl1 = fitcnb (X, Y,...“类名”, {“塞托萨”,“多色的”,“维吉尼亚”},...“CrossVal”,“上”);
默认情况下,软件将每个类中的预测器分布建模为带有一些均值和标准偏差的高斯分布。CVMdl1
是一个ClassificationPartitionedModel
模型。
创建一个默认的朴素贝叶斯二进制分类器模板,并训练一个纠错、输出代码的多类模型。
t=模板NaiveBayes();CVMdl2=FITCECOCC(X,Y,“CrossVal”,“上”,“学习者”t);
CVMdl2
是一个ClassificationPartitionedECOC
模型。可以使用与for相同的名称-值对参数为朴素贝叶斯二进制学习器指定选项fitcnb
.
比较样本外k-折叠分类错误(误分类观察的比例)。
classErr1 = kfoldLoss (CVMdl1,“LossFun”,“ClassifErr”)
classErr1 = 0.0533
classErr2 = kfoldLoss (CVMdl2,“LossFun”,“ClassifErr”)
classErr2 = 0.0467
Mdl2
具有较低的泛化误差。
一些垃圾邮件过滤器根据单词或标点符号(称为令牌)在电子邮件中出现的次数将传入的电子邮件分类为垃圾邮件。预测因素是电子邮件中特定单词或标点符号的频率。因此,预测因子构成多项随机变量。
这个例子说明了使用朴素贝叶斯和多项式预测器进行分类。
创建培训数据
假设您观察了1000封电子邮件,并将它们分类为垃圾邮件或非垃圾邮件。通过将-1或1随机赋给y
对于每一个电子邮件。
n = 1000;%样本大小rng (1);%为了再现性Y = randsample([-1 1],n,true);%随机标签
要构建预测数据,假设词汇表中有五个标记,每封电子邮件有20个观察到的标记。通过绘制随机的多项式偏差,从这五个标记生成预测数据。与垃圾邮件相对应的标记的相对频率应与非垃圾邮件不同。
tokenProbs = [0.2 0.3 0.1 0.15 0.25;...0.4 0.1 0.3 0.05 0.15];令牌相对频率tokensPerEmail = 20;%为方便起见,固定X=零(n,5);X(Y==1,:)=mnrnd(tokensPerEmail,tokenProbs(1,:),sum(Y==1));X(Y=-1,:)=mnrnd(tokensPerEmail,tokenProbs(2,:),sum(Y=-1));
训练分类器
训练朴素贝叶斯分类器。指定预测器是多项式的。
Mdl = fitcnb (X, Y,“DistributionNames”,“锰”);
Mdl
是一个培训分类朴素贝叶斯
分类器。
评估样品内的性能Mdl
通过估计误分类误差。
isGenRate = resubLoss (Mdl,“LossFun”,“ClassifErr”)
isGenRate = 0.0200
样本内误分类率为2%。
创建新的数据
随机生成代表新一批邮件的偏差。
newN=500;newY=randsample([-1],newN,true);newX=zero(newN,5);newX(newY==1,:)=mnrnd(tokensPerEmail,tokenProbs(1,:),...sum(newY==1);newX(newY==1,:)=mnrnd(tokensPerEmail,tokenProbs(2,:),...总和(newY = = 1));
评估分类器的性能
使用训练有素的朴素贝叶斯分类器对新邮件进行分类Mdl
,确定算法是否泛化。
oosGenRate =损失(Mdl newX newY)
oosGenRate = 0.0261
样本外误分类率为2.6%,说明该分类器具有较好的泛化能力。
此示例显示如何使用OptimizeHyperparameters
使用名称-值对最小化朴素贝叶斯分类器中的交叉验证损失fitcnb
.这个例子使用了Fisher的虹膜数据。
载入费雪的虹膜数据。
负载fisheririsX =量;Y =物种;一会= {“塞托萨”,“多色的”,“维吉尼亚”};
使用“auto”参数优化分类。
为了重现性,设置随机种子并使用“预期改善加成”
采集功能。
rng默认的Mdl = fitcnb (X, Y,“类名”一会,“OptimizeHyperparameters”,“汽车”,...“HyperparameterOptimizationOptions”结构(“AcquisitionFunctionName”,...“预期改善加成”))
警告:建议您在优化朴素贝叶斯“宽度”参数时首先标准化所有数值预测器。如果您已经这样做了,请忽略此警告。
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar |分布宽度——| | | | |结果运行时| |(观察)| (estim)名字| | ||=====================================================================================================| | 最好1 | | 0.053333 | 0.49673 | 0.053333 | 0.053333正常| | - | | 2 |最好| 0.046667 | 0.77299 | 0.046667 | 0.049998 | 0.11903内核| | | 3 |接受| 0.053333 | 0.19879 | 0.046667 | 0.046667 |正常| - | | | 0.086667 | 4 |接受内核0.8573 | 0.046667 | 0.046668 | 2.4506 | | | 5 |接受| 0.046667 | 1.163 | 0.046667 | 0.046663 | 0.10449内核| | | 6 |接受| 0.073333 | 1.2136 | 0.046667 | 0.046665 | 0.025044内核| | | | 7日接受| 0.046667 | 0.97829 | 0.046667 | 0.046655 | 0.27647内核| | | 8 |接受| 0.046667 | 0.93511 | 0.046667 | 0.046647 | |内核0.2031 | | | 9日接受| 0.06 | 0.9873 | 0.046667 | 0.046658 | 0.44271内核| | | 10 |接受| 0.046667 | 0.7068 | 0.046667 | 0.046618 | 0.2412内核| | | | 11日接受| 0.046667 | 1.0452 | 0.046667 | 0.046619 | 0.071925内核| | | | 12日接受| 0.046667 | 0.58517 | 0.046667 | 0.046612 | 0.083459内核| | | | 13日接受| 0.046667 | 1.6218 |0.15661内核0.046667 | 0.046603 | | | | | 14日接受| 0.046667 | 0.83563 | 0.046667 | 0.046607 | 0.25613内核| | | 15 |接受| 0.046667 | 0.45013 | 0.046667 | 0.046606 | 0.17776内核| | | | 16日接受| 0.046667 | 0.55668 | 0.046667 | 0.046606 | 0.13632内核| | | | 17日接受| 0.046667 | 0.66138 | 0.046667 | 0.046606 | |内核18 0.077598 | | |接受| 0.046667 | 0.66761 | 0.046667 | 0.046626 | 0.25646内核| | | | 19日接受| 0.046667 | 1.0853 | 0.046667 | 0.046626 | 0.093584内核| | | 20 |接受| 0.046667 | 1.4829 | 0.046667 | 0.046627 | 0.061602内核| | |=====================================================================================================| |我ter | Eval | Objective | Objective | BestSoFar | BestSoFar | Distribution-| Width | | | result | | runtime | (observed) | (estim.) | Names | | |=====================================================================================================| | 21 | Accept | 0.046667 | 1.2761 | 0.046667 | 0.046627 | kernel | 0.066532 | | 22 | Accept | 0.093333 | 0.58556 | 0.046667 | 0.046618 | kernel | 5.8968 | | 23 | Accept | 0.046667 | 0.64275 | 0.046667 | 0.046619 | kernel | 0.067045 | | 24 | Accept | 0.046667 | 1.4991 | 0.046667 | 0.04663 | kernel | 0.25281 | | 25 | Accept | 0.046667 | 0.68537 | 0.046667 | 0.04663 | kernel | 0.1473 | | 26 | Accept | 0.046667 | 0.6169 | 0.046667 | 0.046631 | kernel | 0.17211 | | 27 | Accept | 0.046667 | 0.42397 | 0.046667 | 0.046631 | kernel | 0.12457 | | 28 | Accept | 0.046667 | 0.49855 | 0.046667 | 0.046631 | kernel | 0.066659 | | 29 | Accept | 0.046667 | 1.5052 | 0.046667 | 0.046631 | kernel | 0.1081 | | 30 | Accept | 0.08 | 0.79041 | 0.046667 | 0.046628 | kernel | 1.1048 |
__________________________________________________________ 优化完成。maxobjective达到30个。总函数计算:30总运行时间:60.7285秒总目标函数计算时间:25.8256DistributionNames Width _________________ _______ kernel 0.11903 Observed objective function value = 0.046667 Estimated objective function value = 0.046667 function evaluation time = 0.77299 Best Estimated feasible point (according to models):DistributionNames Width _________________ _______ kernel 0.25613估计的目标函数值= 0.046628估计的函数求值时间= 0.8268
Mdl = ClassificationNaiveBayes ResponseName:‘Y’CategoricalPredictors:[]类名:{“setosa”“杂色的”“virginica”}ScoreTransform:“没有一个”NumObservations: 150 HyperparameterOptimizationResults: [1 x1 BayesianOptimization] DistributionNames: {1} x4细胞DistributionParameters: {} 3 x4细胞内核:{1}x4细胞支持:{1}x4细胞宽度:金宝app[3x4 double]属性,方法
资源描述
- - - - - -样本数据用于训练模型的样本数据,以表格形式指定。每行资源描述
对应一个观察值,每一列对应一个预测变量。可选地,资源描述
可以为响应变量包含一个额外的列。除了字符向量的单元格数组之外,不允许使用多列变量和单元格数组。
如果资源描述
包含响应变量,并且您希望使用中的所有剩余变量资源描述
作为预测器,然后使用ResponseVarName
.
如果资源描述
包含响应变量,并且您只希望使用中剩余变量的子集资源描述
作为预测器,然后通过使用公式
.
如果资源描述
不包含响应变量,则使用Y
。响应变量的长度和中的行数资源描述
必须是相等的。
数据类型:表格
公式
- - - - - -响应变量和预测变量子集的解释模型响应变量和预测变量子集的解释模型,指定为以下形式的字符向量或字符串标量“Y ~ x1 + x2 + x3”
.在这种形式,Y
表示响应变量,和x1
,x2
,x3
表示预测变量。
中指定变量的子集资源描述
作为训练模型的预测器,使用一个公式。如果你指定一个公式,那么软件不使用任何变量资源描述
没有出现在公式
.
公式中的变量名必须是其中的两个变量名资源描述
(Tbl.Properties.VariableNames
)和有效的MATLAB®标识符。您可以验证变量名资源描述
通过使用isvarname
函数。如果变量名无效,则可以使用matlab.lang.makeValidName
函数。
数据类型:烧焦
|字符串
Y
- - - - - -类标签将朴素贝叶斯分类器训练到的类标签,指定为类别、字符或字符串数组、逻辑或数字向量,或字符向量的单元数组。的每个元素Y
的对应行定义类的成员关系X
.Y
金宝app支持K班级级别。
如果Y
是字符数组,则每行必须对应一个类标签。
的长度Y
的行数X
必须是等价的。
数据类型:分类
|烧焦
|字符串
|逻辑
|单
|双
|细胞
X
- - - - - -预测数据预测器数据,指定为数字矩阵。
每一行的X
对应一个观察值(也称为实例或示例),每列对应一个变量(也称为特征)。
的长度Y
的行数X
必须是等价的。
数据类型:双
注意:
该软件将南
,空字符向量(''
),空字符串(""
),< >失踪
,<定义>
元素作为缺失的数据值。
如果Y
包含缺少的值,然后软件删除它们和相应的行X
.
如果X
包含完全由缺失值组成的任何行,然后软件删除这些行和相应的元素Y
.
如果X
包含丢失的值和您设置的值“DistributionNames”、“锰”
,然后软件删除这些行X
以及Y
.
如果一个预测器没有在一个类中表示,也就是说,如果它的所有值都是南
在类中,软件返回一个错误。
删除行X
和相应的元素Y
减少有效的培训或交叉验证样本量。
指定可选的逗号分隔的对名称,值
参数。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“DistributionNames”、“锰”,“前”、“统一”,“KSWidth”,0.5
指定数据分布为多项式,所有类的先验概率相等,所有类的核平滑窗带宽为0.5
单位。
请注意
属性中不能同时使用任何交叉验证的名称-值参数“OptimizeHyperparameters”
名称-值参数。可以为。修改交叉验证“OptimizeHyperparameters”
只有使用“HyperparameterOptimizationOptions”
名称-值参数。
分配名称
- - - - - -数据分布“内核”
|“锰”
|“mvmn”
|“正常”
|字符串数组|字符向量的单元格数组数据分布fitcnb
用于对数据建模,指定为逗号分隔的对,由“DistributionNames”
以及字符向量或字符串标量、字符串数组或字符向量单元格数组。
价值 | 描述 |
---|---|
“内核” |
核平滑密度估计。 |
“锰” |
多项分布。如果您指定锰 ,则所有特征都是多项式分布的组成部分。因此,不能包含“锰” 作为字符串数组或字符向量的单元格数组的元素。有关详细信息,请参见算法. |
“mvmn” |
多元多项式分布。有关详细信息,请参阅算法. |
“正常” |
正态(高斯)分布。 |
如果指定字符向量或字符串标量,则软件将使用该分布建模所有特征。如果你指定一个1乘-P字符串数组或单元格数组的字符向量,然后软件模型的特征j使用元素中的分布j的数组。
默认情况下,软件将所有指定的预测器设置为分类预测器(使用分类预测因子
名称-值对参数)“mvmn”
.否则,默认分布为“正常”
.
必须指定至少一个预测器具有分布“内核”
补充说明内核
,金宝app
,或宽度
.
例子:“DistributionNames”、“锰”
例子:'DistributionNames',{'kernel','normal','kernel'}
内核
- - - - - -核平滑器类型“正常”
(默认)|“盒子”
|“epanechnikov”
|“三角形”
|字符串数组|字符向量的单元格数组内核平滑类型,指定为逗号分隔对组成“内核”
以及字符向量或字符串标量、字符串数组或字符向量的单元格数组。
此表总结了用于设置内核平滑密度区域的可用选项我{u}表示指示函数。
价值 | 内核 | 公式 |
---|---|---|
“盒子” |
框(统一) |
|
“epanechnikov” |
叶帕涅奇尼科夫 |
|
“正常” |
高斯 |
|
“三角形” |
三角形的 |
|
如果你指定一个1乘-P字符串数组或单元格数组,数组中的每个元素都包含表中的任意值,然后软件使用元素中的内核平滑类型训练分类器j为特征j在X
. 该软件忽略了内核
不对应于其分布为“内核”
.
必须指定至少一个预测器具有分布“内核”
补充说明内核
,金宝app
,或宽度
.
例子:“内核”,{“epanechnikov”、“正常”}
金宝app
- - - - - -核平滑密度支持金宝app“无限”
(默认)|“积极”
|字符串数组|单元阵列|数字行向量核平滑密度支持,指定为逗号分隔对组成金宝app“金宝app支持”
和“积极”
,“无限”
、字符串数组、单元格数组或数字行向量。该软件将核平滑密度应用到指定区域。
这个表总结了设置核平滑密度区域的可用选项。
价值 | 描述 |
---|---|
1乘2的数字行向量 | 例如[L,U] ,在那里l 和U 分别为密度支持的有限上界和下界。金宝app |
“积极” |
密度支持都是正的实值。金宝app |
“无限” |
密度支持都是真实值。金宝app |
如果你指定一个1乘-P字符串数组或单元格数组,字符串数组中的每个元素包含表中的任意文本值,单元格数组中的每个元素包含表中的任意值,然后软件使用element中的内核支持来训练分类器金宝appj为特征j在X
. 该软件忽略了内核
不对应于其分布为“内核”
.
必须指定至少一个预测器具有分布“内核”
补充说明内核
,金宝app
,或宽度
.
例子:'KS金宝appSupport',{[-10,20],'unbounded'}
数据类型:烧焦
|字符串
|细胞
|双
宽度
- - - - - -核平滑窗宽内核平滑窗口宽度,指定为逗号分隔对,由“宽度”
以及由数值、数值列向量、数值行向量或标量组成的矩阵。
假设有K班级级别和P预测因子。这个表总结了设置内核平滑窗口宽度的可用选项。
价值 | 描述 |
---|---|
K-借-P数值矩阵 | 元素(j k,)指定预测器的宽度j在课堂上k. |
K-by-1数字列向量 | 要素k指定类中所有预测器的宽度k. |
1 -P数字行向量 | 要素j指定预测器的所有类级别的宽度j. |
标量 | 指定所有类中的所有特性的带宽。 |
默认情况下,软件通过使用高斯分布的最优值,自动为每个预测器和类的组合选择默认宽度。如果您指定宽度
,它包含南
S,然后软件为包含的元素选择宽度南
年代。
必须指定至少一个预测器具有分布“内核”
补充说明内核
,金宝app
,或宽度
.
例子:“宽度”,南南
数据类型:双
|结构体
CVD分区
- - - - - -交叉验证分区[]
(默认)|cvpartition
分区对象交叉验证分区,指定为cvpartition
由创建的分区对象cvpartition
.分区对象指定交叉验证的类型以及训练集和验证集的索引。
要创建一个交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVD分区
,坚持
,肯福尔德
,或Leaveout
.
例子:假设您使用以下方法创建了一个随机分区,用于对500个观测数据进行5倍交叉验证本量利= cvpartition(500年,“KFold”,5)
.然后,您可以使用“cvp”,cvp
.
分类预测因子
- - - - - -分类预测列表“所有”
分类预测器列表,指定为该表中的值之一。
价值 | 描述 |
---|---|
正整数向量 | 向量中的每一项都是一个指标值,表明相应的预测器是分类的。索引值在1到之间 如果 |
逻辑向量 | 一个 |
字符矩阵 | 矩阵的每一行都是一个预测变量的名称。名称必须与里面的条目相匹配PredictorNames .用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。 |
字符向量的字符串数组或单元格数组 | 数组中的每个元素都是一个预测变量的名称。名称必须与里面的条目相匹配PredictorNames . |
“全部” |
所有的预测都是绝对的。 |
默认情况下,如果预测器数据在表中(资源描述
),fitcnb
假设变量是分类变量,如果它是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元格数组。如果预测器数据是矩阵(X
),fitcnb
假设所有预测器都是连续的。要将任何其他预测器标识为分类预测器,请使用“CategoricalPredictors”
名称-值参数。
对于确定的分类预测因子,fitcnb
使用多元多项分布。有关详细信息,请参见分配名称
和算法.
例子:“CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|烧焦
|字符串
|细胞
一会
- - - - - -用于培训的类名用于训练的类名,指定为分类数组、字符数组或字符串数组;逻辑或数字向量;或者字符向量的单元格数组。一会
中的响应变量必须具有相同的数据类型资源描述
或Y
.
如果一会
是字符数组,则每个元素必须与数组的一行相对应。
使用一会
:
在培训期间指定课程的顺序。
指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用一会
指定尺寸的顺序费用
或返回的分类分数的列顺序预测
.
选择要训练的类的子集。例如,假设Y
是(“a”、“b”、“c”)
.使用来自类的观察来训练模型“a”
和“c”
仅指定“类名”[“a”、“c”]
.
的默认值一会
中响应变量中所有不同类名的集合资源描述
或Y
.
例子:“类名”,(“b”,“g”)
数据类型:分类
|烧焦
|字符串
|逻辑
|单
|双
|细胞
费用
- - - - - -成本的错误分类一个点的错误分类代价,指定为逗号分隔对组成“成本”
以及以下其中之一:
默认值是成本(i, j) = 1
如果i~=j
,成本(i, j) = 0
如果我=我
.
例子:'Cost',struct('ClassNames',{{'b','g'}},'ClassificationCosts',[0.5;1 0])
数据类型:单
|双
|结构体
PredictorNames
- - - - - -预测器变量名预测器变量名,指定为具有惟一名称的字符串数组或具有惟一字符向量的单元格数组。的功能PredictorNames
这取决于你提供培训数据的方式。
如果你提供X
和Y
,然后您可以使用PredictorNames
为中的预测变量指定名称X
.
名字的顺序PredictorNames
必须对应的列顺序X
.也就是说,PredictorNames {1}
你的名字是什么X(:,1)
,预测器名称{2}
你的名字是什么X(:,2)
等等而且大小(X, 2)
和元素个数(PredictorNames)
必须是相等的。
默认情况下,PredictorNames
是{x1, x2,…}
.
如果你提供资源描述
,然后您可以使用PredictorNames
选择在训练中使用的预测变量。也就是说,fitcnb
仅使用中的预测变量PredictorNames
以及训练过程中的反应变量。
PredictorNames
一定是?的子集Tbl.Properties.VariableNames
且不能包含响应变量的名称。
默认情况下,PredictorNames
包含所有预测变量的名称。
一个好的实践是指定使用这两种方法进行训练的预测器PredictorNames
或公式
,但不是两者都有。
例子:“PredictorNames”(“SepalLength”、“SepalWidth”,“PetalLength”,“PetalWidth”)
数据类型:字符串
|细胞
之前
- - - - - -先验概率“经验”
(默认)|“统一”
|标量向量|结构每个类的先验概率,指定为逗号分隔对,由“之前”
和这个表中的值。
价值 | 描述 |
---|---|
“经验” |
类先验概率是类的相对频率Y . |
“统一” |
所有类先验概率都等于1/K,在那里K是班级的数量。 |
数值向量 | 每个元素都是一类先验概率。按顺序排列元素Mdl .类名 或使用一会 名称-值对的论点。软件将元素标准化,使它们相加为1 . |
结构 | 建筑物
|
如果为这两个设置值权重
和之前
时,权重被重归一化,使其与所属类的先验概率值相加。
例子:“前”、“制服”
数据类型:烧焦
|字符串
|单
|双
|结构体
ResponseName
- - - - - -响应变量名“Y”
(默认)|特征向量|字符串标量响应变量名称,指定为字符向量或字符串标量。
如果你提供Y
,然后您可以使用ResponseName
为响应变量指定名称。
如果你提供ResponseVarName
或公式
,则不能使用ResponseName
.
例子:“ResponseName”、“反应”
数据类型:烧焦
|字符串
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函数或您定义的函数,使用其函数句柄进行分数变换。函数句柄必须接受一个矩阵(原始分数)并返回相同大小的矩阵(转换后的分数)。
例子:“ScoreTransform”、“分对数”
数据类型:烧焦
|字符串
|function_handle
权重
- - - - - -观察权重资源描述
OptimizeHyperparameters
- - - - - -参数优化“没有”
(默认)|“汽车”
|“所有”
|符合条件的参数名称的字符串数组或单元格数组|向量的optimizableVariable
对象要优化的参数,指定为逗号分隔的对“OptimizeHyperparameters”
以及以下其中之一:
“没有”
-不要优化。
“汽车”
——使用{“DistributionNames”、“宽度”}
.
“所有”
-优化所有符合条件的参数。
符合条件的参数名称的字符串数组或单元格数组。
向量的optimizableVariable
对象,通常是hyperparameters
.
优化尝试最小化交叉验证损失(错误)fitcnb
通过改变参数。有关交叉验证丢失的信息(尽管在不同的上下文中),请参见分类损失.要控制交叉验证类型和其他方面的优化,请使用HyperparameterOptimizationOptions
名称-值对。
请注意
的值“OptimizeHyperparameters”
重写使用其他名称-值参数指定的任何值。例如,设置“OptimizeHyperparameters”
来“汽车”
原因fitcnb
优化与“汽车”
选项和忽略超参数的任何指定值。
符合条件的参数fitcnb
是:
通过传递的向量来设置非默认参数optimizableVariable
具有非默认值的对象。例如
负载fisheriris参数=超参数(“fitcnb”量,物种);参数(2)。范围=(1飞行,1 e2);
通过参数个数
的价值OptimizeHyperparameters
.
默认情况下,迭代显示出现在命令行,并根据优化中超参数的数量显示绘图。对于优化和绘图,目标函数为误分类率。若要控制迭代显示,请设置详细的
场的“HyperparameterOptimizationOptions”
名称值参数。若要控制绘图,请设置ShowPlots
场的“HyperparameterOptimizationOptions”
名称-值参数。
例如,请参见优化朴素贝叶斯分类器.
例子:“汽车”
HyperparameterOptimizationOptions
- - - - - -选择优化作为结构指定的优化选项。该参数修改OptimizeHyperparameters
名称-值参数。结构中的所有字段都是可选的。
字段名 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
获取函数的名称包括 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
目标函数求值的最大次数。 | 30. 为“bayesopt” 和“randomsearch” ,和整个网格“gridsearch” |
MaxTime |
时间限制,指定为正实标量。时间限制以秒为单位,用 |
正 |
NumGridDivisions |
为“gridsearch” ,表示每个维度中值的数量。该值可以是一个给出每个维度值数量的正整数向量,也可以是适用于所有维度的标量。对于分类变量,该字段被忽略。 |
10 |
ShowPlots |
指示是否显示绘图的逻辑值。如果真正的 ,该域根据迭代次数绘制最佳观测目标函数值。如果你使用贝叶斯优化(优化器 是“bayesopt” ),则该域也绘制出最佳估计目标函数值。的最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察) 和BestSoFar (estim)。 列的迭代显示,分别。您可以在属性中找到这些值目标最小跟踪 和EstimatedObjectiveMinimumTrace 的Mdl。HyperparameterOptimizationResults .如果问题包含一个或两个贝叶斯优化的优化参数,那么ShowPlots 还根据参数绘制目标函数的模型。 |
真正的 |
SaveIntermediateResults |
逻辑值,指示在执行以下操作时是否保存结果优化器 是“bayesopt” .如果真正的 ,此字段将覆盖名为“BayesoptResults” 在每一个迭代。变量是aBayesianOptimization 对象。 |
假 |
详细的 |
在命令行显示:
具体操作请参见 |
1 |
UseParallel |
指示是否并行运行贝叶斯优化的逻辑值,需要并行计算工具箱™. 由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。有关详细信息,请参阅平行的贝叶斯优化. | 假 |
重新分区 |
指示是否在每次迭代时重新划分交叉验证的逻辑值。如果这个字段是 背景 |
假 |
使用以下三个选项中的任意一个。 | ||
CVD分区 |
一个cvpartition 对象,如所创建的cvpartition |
“Kfold”,5 如果您没有指定交叉验证字段 |
坚持 |
范围内的标量(0,1) 表示保持分数 |
|
Kfold |
大于1的整数 |
例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)
数据类型:结构体
在令牌袋模型中,预测器的值j令牌出现的次数是否为非负数j在观察。多项式模型中的类别(箱子)的数量就是不同标记的数量(预测器的数量)。
朴素贝叶斯是一种将密度估计应用于数据的分类算法。
该算法利用贝叶斯定理,并且(天真地)假设预测值是条件独立的,给定类别。尽管在实践中通常违反该假设,但天真贝叶斯分类器倾向于产生对有偏类别密度估计具有鲁棒性的后验分布,特别是在后验分布为0.5的情况下(决定边界)[1].
朴素贝叶斯分类器将观测值分配给最有可能的类(换句话说,就是最大后验决策规则)。显然,该算法采取以下步骤:
估计每个类中预测因子的密度。
根据贝叶斯规则建立后验概率模型。就是说,k= 1,...,K,
地点:
Y是与观测值的类别指数相对应的随机变量。
X1,...,XP是对一个观测结果的随机预测。
类别索引的先验概率是多少k.
通过估计每个类别的后验概率对一个观察进行分类,然后将该观察分配给产生最大后验概率的类别。
如果预测因子组成一个多项分布,则后验概率 在哪里 是多项式分布的概率质量函数。
用于对基于计数的数据进行分类,例如bag-of-tokens模型,使用多项分布(例如,集合“DistributionNames”、“锰”
).
在训练模型之后,您可以生成C/ c++代码来预测新数据的标签。生成C/ c++代码需要MATLAB编码器™. 有关详细信息,请参阅代码生成简介.
中频预测变量j
有条件正态分布(见分配名称
软件通过计算特定类别的加权平均值和加权标准偏差的无偏估计值,将分布拟合到数据。每节课k:
预测器的加权平均数j是
在哪里w我重量是用于观察的吗我.该软件将一个类中的权重标准化,这样它们的总和就等于该类的先验概率。
预测器加权标准差的无偏估计j是
在哪里z1 |k是类内权重的总和吗k和z2 |k是类中权重的平方和k.
如果所有预测变量组成条件多项式分布(您指定“DistributionNames”、“锰”
),该软件适合使用bag-of-tokens模型.软件存储该令牌的概率j
出现在课堂上k
在财产中DistributionParameters {
.使用添加剂平滑[2],估计的概率是k
,j
}
地点:
令牌的加权出现次数是多少j在课堂上k.
nk课堂上观察的次数是多少k.
重量是用于观察的吗我.该软件将一个类中的权重标准化,这样它们的总和就等于该类的先验概率。
哪个是类中所有令牌出现的加权总数k.
中频预测变量j
具有条件多元多项分布:
该软件收集了一个独特的关卡列表,并将排序后的列表存储在其中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.
[1] 黑斯蒂、T、R.蒂布什拉尼和J.弗里德曼。统计学习的要素,第二版。纽约:施普林格,2008年。
[2] Manning, Christopher D., Prabhakar Raghavan, Hinrich Schütze。信息检索概论,纽约:剑桥大学出版社,2008。
这个函数支持长数组,但有以下金宝app限制:
金宝app支持的语法包括:
Mdl = fitcnb(资源描述,Y)
Mdl = fitcnb (X, Y)
Mdl=fitcnb(\uuuuuuuuuuuuuuu,名称,值)
不支持与内核密度、交叉验证和超参数优化相关的选项。金宝app支持的名金宝app称-值对参数有:
“DistributionNames”
- - - - - -“内核”
不支持。金宝app
“CategoricalPredictors”
“成本”
“PredictorNames”
“之前”
“ResponseName”
“ScoreTransform”
“重量”
-值必须是高数组。
有关更多信息,请参见内存不足数据的高阵列.
要执行并行超参数优化,请使用“HyperparameterOptimizationOptions”、结构(UseParallel,真的)
的名称-值参数fitcnb
函数。
有关并行超参数优化的更多信息,请参见平行的贝叶斯优化.
有关并行计算的一般信息,请参见运行MATLAB函数与自动并行支持金宝app(并行计算工具箱).
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。