训练多类朴素贝叶斯模型
收益多类朴素贝叶斯模型(Mdl
= fitcnb(TBL
,ResponseVarName
)Mdl
),培养在表中的预测TBL
和类标签的变量Tbl.ResponseVarName
。
加载费舍尔的虹膜数据集。
加载fisheririsX = MEAS(:,3:4);Y =物种;制表(Y)
值计数百分比setosa 50 33.33%50花斑癣33.33%锦葵50 33.33%
该软件可以使用朴素贝叶斯方法对两类以上的数据进行分类。
训练朴素贝叶斯分类器。这是指定的类顺序很好的做法。
MDL = fitcnb(X,Y,...“类名”,{'setosa',“花斑癣”,“弗吉尼亚”})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal'} DistributionParameters: {3x2 cell}属性、方法
Mdl
是一个训练有素的ClassificationNaiveBayes
分类器。
默认情况下,软件模型使用具有一些均值和标准差的高斯分布的每个类别中的预测分布。使用点表示法显示特定高斯拟合的参数,例如,显示适合内的第一特征setosa
。
setosaIndex = strcmp (Mdl.ClassNames,'setosa');估计= 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);亩=参数(2 *(1:3)-1,1:2);%提取手段西格玛=零(2,2,3);对于1 = 1:3 Sigma(:,:,j) = diag(Params(2*j,:)).^2;%创建对角协方差矩阵xlim = Mu(j,1) + 4*[-1]*sqrt(Sigma(1,1,j));ylim = Mu(j,2) + 4*[-1]*sqrt(Sigma(2,2,j));f = @ (x1, x2)重塑(mvnpdf ((x1 (:), x2(:)),μ(j,:),σ(:,:,j)),大小(x1));fcontour (f, [xlim ylim])%画出轮廓的多变量正态分布结束h。X大号一世米=CXlim; h.YLim = cylim; title(“朴素贝叶斯分类器 - 费舍尔的虹膜数据”)包含('花瓣长度(cm)')ylabel (“花瓣宽度(厘米)”)传说('setosa',“花斑癣”,“弗吉尼亚”)保持从
您可以使用名称 - 值对参数更改默认的分配'DistributionNames'
。例如,如果一些预测是明确的,那么你可以指定他们使用多变量,多项随机变量'DistributionNames', 'mvmn'
。
构建一个朴素贝叶斯分类器对费舍尔的虹膜数据集。此外,培训期间指定先验概率。
加载费舍尔的虹膜数据集。
加载fisheririsX =量;Y =物种;类名= {'setosa',“花斑癣”,“弗吉尼亚”};%级顺序
X
是一个包含150和虹膜4次花瓣测量的数值矩阵。ÿ
是字符向量的单元阵列,它包含相应的虹膜物种。
默认情况下,在现有类的概率分布是在所述数据集,在这种情况下对于每个物种的33%的类的相对频率分布。但是,假设你知道,在人口虹膜的50%是setosa,20%是花斑癣,30%是弗吉尼亚。您可以通过训练过程中指定该分布作为先验概率将这一信息。
训练朴素贝叶斯分类器。指定类次序和现有类的概率分布。
现有= [0.5 0.2 0.3]。MDL = fitcnb(X,Y,“类名”一会,“在此之前”之前)
MDL = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors:[]类名:{ 'setosa' '云芝' '锦葵'} ScoreTransform: '无' NumObservations:150个DistributionNames:{ '正常' '正常' '正常' '正常'} DistributionParameters{3×4电池}属性,方法
Mdl
是一个训练有素的ClassificationNaiveBayes
分类,和它的一些特性出现在命令窗口。该软件将预测作为独立给出一个类,在默认情况下,适合使用它们正态分布。
朴素贝叶斯算法训练过程中不使用之前类概率。因此,您可以使用点符号训练后指定之前类概率。例如,假设你想看到使用默认之前类概率和一个模型,使用模型之间的性能差异先
。
建立一个新的朴素贝叶斯模型Mdl
,并指定先验类的概率分布为经验类分布。
defaultPriorMdl =铜牌;FreqDist = cell2table(平板状(Y));defaultPriorMdl.Prior = 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,...“类名”,{'setosa',“花斑癣”,“弗吉尼亚”})
Mdl1 = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell}属性、方法
Mdl1.DistributionParameters
ANS =3×4单元阵列{2x1双}{2x1双}{2x1双}{2x1双}{2x1双}{2x1双}{2x1双}{2x1双}{2x1双}{2x1双}{2x1双}{2x1双}{2x1双}
Mdl1.DistributionParameters {1,2}
ANS =2×13.4280 0.3791
默认情况下,软件将每个类内的预测器分布建模为具有一定均值和标准差的高斯分布。有四个预测器和三个类级别。每个细胞在Mdl1.DistributionParameters
对应于含有各分布的平均值和标准偏差的数值向量,例如,用于setosa的平均值和标准偏差虹膜萼片宽度3.4280
和0.3791
, 分别。
估计所述混淆矩阵Mdl1
。
isLabels1 = resubPredict (Mdl1);ConfusionMat1 = confusionchart (Y, isLabels1);
元素(Ĵ,ķ)混淆矩阵图表的表示观察的数目,该软件归类为ķ,但真正在课堂上Ĵ根据该数据。
重新训练使用用于预测1和2(在萼片长度和宽度)的高斯分布的分类器,以及用于预测3和4(花瓣的长度和宽度)的默认正常核密度。
MDL2 = fitcnb(X,Y,...'DistributionNames',{'正常','正常','核心','核心'},...“类名”,{'setosa',“花斑癣”,“弗吉尼亚”});Mdl2.DistributionParameters {1,2}
ANS =2×13.4280 0.3791
软件不训练参数到核密度。相反,软件会选择一个最佳宽度。属性指定宽度“宽度”
名称-值对的论点。
估计所述混淆矩阵Mdl2
。
isLabels2 = resubPredict (Mdl2);ConfusionMat2 = confusionchart (Y, isLabels2);
基于所述混淆矩阵,所述两个分类器训练样本中类似地执行。
加载费舍尔的虹膜数据集。
加载fisheririsX =量;Y =物种;RNG(1);%用于重现
火车和交叉验证朴素贝叶斯分类使用默认选项和ķ倍交叉验证。这是指定的类顺序很好的做法。
CVMdl1 = fitcnb (X, Y,...“类名”,{'setosa',“花斑癣”,“弗吉尼亚”},...“CrossVal”,'上');
默认情况下,软件将每个类内的预测器分布建模为具有一定均值和标准差的高斯分布。CVMdl1
是一个ClassificationPartitionedModel
模型。
创建一个默认的朴素贝叶斯二进制分类器模板,并训练一个纠错、输出码的多类模型。
T = templateNaiveBayes();CVMdl2 = fitcecoc(X,Y,“CrossVal”,'上',“学习者”,T);
CVMdl2
是一个ClassificationPartitionedECOC
模型。您可以使用相同的名称 - 值对的参数作为指定朴素贝叶斯学习二元期权fitcnb
。
比较出的样本ķ-折叠分类误差(误分类观测的比例)。
classErr1 = kfoldLoss(CVMdl1,“LossFun”,'ClassifErr')
classErr1 = 0.0533
classErr2 = kfoldLoss (CVMdl2,“LossFun”,'ClassifErr')
classErr2 = 0.0467
Mdl2
具有较低的泛化误差。
一些垃圾邮件过滤器根据一个单词或标点符号(称为标记)在电子邮件中出现的次数将收到的电子邮件归类为垃圾邮件。预测因子是电子邮件中特定单词或标点符号出现的频率。因此,预测因子由多项随机变量组成。
本实施例说明使用朴素贝叶斯和多项式预测器的分类。
创建训练数据
假设你观察到的1000封电子邮件,并归类他们为垃圾邮件或垃圾邮件。通过随机分配做到这一点-1或1ÿ
对于每一个电子邮件。
N = 1000;%样本量RNG(1);%用于重现Y = randsample([-1],n,true);%随机标签
要构建预测器数据,假设词汇表中有5个标记,每封电子邮件有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 = 0 (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
是一个训练有素的ClassificationNaiveBayes
分类器。
评估中,样品性能Mdl
通过估计误分。
isGenRate = resubLoss(MDL,“LossFun”,'ClassifErr')
isGenRate = 0.0200
样本内误分类率为2%。
创建新数据
随机产生,代表了一批新的电子邮件偏离。
newN = 500;newY = randsample([ - 1 1],newN,TRUE);下一页末=零(newN,5);下一页末(newY == 1,:) = mnrnd(tokensPerEmail,tokenProbs(1,:),...总和(newY = = 1));newX(newY == -1,:) = mnrnd(tokenProbs),...总和(newY == -1));
评估分类器的性能
使用训练好的朴素贝叶斯分类器对新邮件进行分类Mdl
,并确定算法是否可以推广。
oosGenRate =损失(Mdl newX newY)
oosGenRate = 0.0261
出样品的-错误分类率2.6%,表明该分类归纳得相当好。
这个示例展示如何使用OptimizeHyperparameters
名称 - 值对分类器使用,以尽量减少在朴素贝叶斯交叉验证损失fitcnb
。这个例子使用了Fisher的虹膜数据。
加载费舍尔的虹膜数据。
加载fisheririsX =量;Y =物种;类名= {'setosa',“花斑癣”,“弗吉尼亚”};
使用“auto”参数优化分类。
对于重复性,设置随机种子,并使用“预计-改善,加上”
采集功能。
RNG默认MDL = fitcnb(X,Y,“类名”一会,'OptimizeHyperparameters','汽车',...“HyperparameterOptimizationOptions”,结构('AcquisitionFunctionName',...“预计-改善,加上”))
警告:建议在优化朴素贝叶斯的宽度参数时首先标准化所有数值预测器。如果您已经这样做了,请忽略此警告。
| ===================================================================================================== ||ITER |EVAL |目的|目的|BestSoFar |BestSoFar |分布 - |宽度| | | result | | runtime | (observed) | (estim.) | Names | | |=====================================================================================================| | 1 | Best | 0.053333 | 0.75774 | 0.053333 | 0.053333 | normal | - |
|2 |最佳|0.046667 |0.76016 |0.046667 |0.049998 |内核|0.11903 |
| 3 |接受| 0.053333 | 0.29251 | 0.046667 | 0.046667正常| - |
|4 |接受|0.086667 |0.6733 |0.046667 |0.046668 |内核|2.4506 |
|5 |接受|0.046667 |0.57392 |0.046667 |0.046663 |内核|0.10449 |
|6 |接受|0.073333 |0.82565 |0.046667 |0.046665 |内核|0.025044 |
|7 |接受|0.046667 |0.75362 |0.046667 |0.046655 |内核|0.27647 |
| 8接受| 0.046667 b| 0.57496 | 0.046667 | 0.046647 |内核bb7 0.2031 |
|9 |接受|0.06 |0.43719 |0.046667 |0.046658 |内核|0.44271 |
|10 |接受|0.046667 |0.53128 |0.046667 |0.046618 |内核|0.2412 |
|11 |接受|0.046667 |0.75877 |0.046667 |0.046619 |内核|0.071925 |
|12 |接受|0.046667 |0.67806 |0.046667 |0.046612 |内核|0.083459 |
|13 |接受|0.046667 |1.2735 |0.046667 |0.046603 |内核|0.15661 |
|14 |接受|0.046667 |0.93114 |0.046667 |0.046607 |内核|0.25613 |
| 15 |接受| 0.046667 b| 0.68034 | 0.046667 | 0.046606 |内核| 0.17776 |
|16 |接受|0.046667 |0.34665 |0.046667 |0.046606 |内核|0.13632 |
| 17接受| 0.046667 b| 0.71023 | 0.046667 | 0.046606 |内核| 0.077598 |
|18 |接受|0.046667 |0.40713 |0.046667 |0.046626 |内核|0.25646 |
|19 |接受|0.046667 |0.89971 |0.046667 |0.046626 |内核|0.093584 |
| 20 |接受| 0.046667 b| 1.4125 | 0.046667 | 0.046627 |内核| 0.061602 |
| ===================================================================================================== ||ITER |EVAL |目的|目的|BestSoFar |BestSoFar |分布 - |宽度| | | result | | runtime | (observed) | (estim.) | Names | | |=====================================================================================================| | 21 | Accept | 0.046667 | 0.48559 | 0.046667 | 0.046627 | kernel | 0.066532 |
|22 |接受|0.093333 |0.61192 |0.046667 |0.046618 |内核|5.8968 |
|23 |接受|0.046667 |0.34903 |0.046667 |0.046619 |内核|0.067045 |
|24 |接受|0.046667 |0.41643 |0.046667 |0.04663 |内核|0.25281 |
| 25 |接受| 0.77772 | 0.046667 | 0.04663 |内核bb7 0.1473 |
|26 |接受|0.046667 |0.39873 |0.046667 |0.046631 |内核|0.17211 |
| 27 |接受| 0.44217 | 0.046667 | 0.046631 |内核bb7 0.12457 |
| 28 |接受| 0.046667 | 0.39119 | 0.046667 | 0.046631 |内核| 0.066659 |
|29 |接受|0.046667 |0.4653 |0.046667 |0.046631 |内核|0.1081 |
|30 |接受|0.08 |0.42473 |0.046667 |0.046628 |内核|1.1048 |
__________________________________________________________优化完成。30 MaxObjectiveEvaluations达到。总功能评价:30总运行时间:79.0981秒。总目标函数评估时间:(根据型号)DistributionNames宽度_________________ _______内核0.11903观测目标函数值= 0.046667估计目标函数值= 0.046667功能评估时间= 0.76016最佳估计可行点:19.0411最佳观察到的可行点DistributionNames宽度_________________ _______内核0.25613估计目标函数值= 0.046628估计函数评估时间= 0.58962
MDL = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors:[]类名:{ 'setosa' '云芝' '锦葵'} ScoreTransform: '无' NumObservations:150个HyperparameterOptimizationResults:[1x1的BayesianOptimization] DistributionNames:{1×4细胞} DistributionParameters:{3×4细胞}内核:{1×4细胞}支持:{1×4细胞}万博1manbetx宽度:[3x4的双]的属性,方法
TBL
-样本数据用于训练模型的样本数据,指定为表。每行TBL
对应于一个观测,并且每一列对应于一个预测变量。(可选)TBL
可以包含用于响应变量一个附加列。多列变量和除字符向量的单元阵列的其他单元阵列是不允许的。
如果TBL
包含响应变量,并且您希望使用中所有剩余的变量TBL
作为预测,然后通过使用指定响应变量ResponseVarName
。
如果TBL
包含响应变量,您希望只使用其余变量的一个子集TBL
作为预测,然后通过使用指定一个公式公式
。
如果TBL
不包含响应变量,然后通过使用指定的响应变量ÿ
。响应变量的长度和输入的行数TBL
必须相等。
数据类型:表格
公式
-响应变量的解释模型和预测变量的子集响应变量和预测器变量的子集的说明模型,指定为形式的字符向量或标量串'Y〜X1 + X2 + X3'
。在这种形式下,ÿ
表示响应变量,和X1
,X2
,X3
代表预测变量。
要指定变量的一个子集TBL
作为预测用于训练模型,使用公式。如果您指定一个公式,则该软件不使用任何变量TBL
没有出现在公式
。
公式中的变量名必须在两个变量名TBL
(Tbl.Properties.VariableNames
)和有效MATLAB®身份标识。
您可以验证变量名TBL
通过使用isvarname
函数。下面的代码返回逻辑1
(真正的
)对于具有合法的变量名每个变量。
cellfun (@isvarname Tbl.Properties.VariableNames)
TBL
无效,然后使用matlab.lang.makeValidName
函数。Tbl.Properties.VariableNames=matlab.lang.makeValidName(Tbl.Properties.VariableNames);
数据类型:烧焦
|串
ÿ
-类标签训练朴素贝叶斯分类器的类标签,指定为分类、字符或字符串数组、逻辑或数字向量或字符向量的单元数组。的每个元素ÿ
的对应行定义类成员X
。ÿ
万博1manbetx支持ķ职业等级。
如果ÿ
是一个字符阵列,则每行必须对应于一个类的标签。
长度ÿ
的行数X
必须等同。
数据类型:分类
|烧焦
|串
|合乎逻辑
|单
|双
|细胞
X
-预测数据预测数据,其指定为数值矩阵。
每行X
对应于一个观测(也称为一个实例或示例),并且每一列对应于一个变量(也称为特征)。
长度ÿ
的行数X
必须等同。
数据类型:双
该软件将为NaN
,空字符向量(”
),空字符串(“”
),<缺失>
,<未定义>
元素作为丢失的数据值。
如果ÿ
包含缺失值,那么软件删除它们,并相应行X
。
如果X
包含任何完全的缺失值组成的行,则该软件除去那些行和相应的元素ÿ
。
如果X
包含缺失值和你设定“DistributionNames”、“锰”
,然后软件删除这些行X
和的相应的元件ÿ
。
如果一个预测器没有在一个类中表示,也就是说,如果它的所有值都表示为NaN
在类中,那么软件会返回一个错误。
删除的行X
对应的元素ÿ
降低了有效的培训或交叉验证的样本大小。
指定可选的用逗号分隔的对名称,值
参数。的名字
是参数的名称和价值
为对应值。的名字
必须出现在引号内。可以按任意顺序指定多个名称和值对参数名1,值1,...,NameN,值N
。
'DistributionNames', 'MN', '前', '均匀', 'KSWidth',0.5
指定数据分布是多项,用于所有类的先验概率是相等的,和用于所有类的核平滑窗口带宽是0.5
单位。
你可以不使用任何交叉验证名称 - 值对参数与沿'OptimizeHyperparameters'
名称-值对的论点。的交叉验证'OptimizeHyperparameters'
只有通过使用“HyperparameterOptimizationOptions”
名称-值对的论点。
'DistributionNames'
-数据分布'核心'
|“百万”
|'mvmn'
|'正常'
|字符串数组|字符向量的单元阵列数据分布fitcnb
用途的数据,指定为逗号分隔的一对组成的建模'DistributionNames'
和字符向量或标量的字符串,一个字符串数组,或字符向量的单元阵列与从该表中的值。
价值 | 描述 |
---|---|
'核心' |
核平滑密度估计。 |
“百万” |
多项分布。如果您指定锰 ,那么所有的功能都是多项分布组件。因此,你可以不包括“百万” 作为字符串数组或字符向量的单元数组的元素。有关详细信息,请参阅算法。 |
'mvmn' |
多变量多项分布。有关详细信息,请参阅算法。 |
'正常' |
正态(高斯)分布。 |
如果指定一个字符向量或串标,那么软件模型的所有功能,使用该分布。如果指定了1逐P字符串数组或字符向量的单元阵列,则软件模型特征Ĵ使用元素的分布Ĵ阵列的。
默认情况下,软件将指定的所有预测器设置为直言预测器(使用CategoricalPredictors
名称 - 值对的参数),以'mvmn'
。否则,默认分布'正常'
。
您必须指定至少一个预测有分布'核心'
要另外指定内核
,万博1manbetx
,或宽度
。
例子:“DistributionNames”、“锰”
例子:DistributionNames,{“内核”、“正常”、“内核”}
“内核”
-内核流畅的类型'正常'
(默认)|'框'
|“epanechnikov”
|'三角形'
|字符串数组|字符向量的单元阵列内核平滑型,指定为逗号分隔的一对组成的“内核”
以及字符向量或字符串标量、字符串数组或字符向量的单元数组。
此表概括了用于设置的核平滑密度区域的可用选项。让一世{ü}表示指示功能。
价值 | 内核 | 式 |
---|---|---|
'框' |
盒(统一) |
|
“epanechnikov” |
Epanechnikov |
|
'正常' |
高斯 |
|
'三角形' |
三角 |
|
如果指定了1逐P串阵列或电池阵列,用含有表中的任何值阵列的每个元素,则该软件训练使用元件内核平滑类型分类Ĵ为特征Ĵ在X
。该软件忽略的要素内核
与分布为的预测器不对应'核心'
。
您必须指定至少一个预测有分布'核心'
要另外指定内核
,万博1manbetx
,或宽度
。
例子:'内核',{ 'epanechnikov', '正常'}
'万博1manbetx支持'
-核平滑密度支持万博1manbetx“无限”
(默认)|“积极”
|字符串数组|单元阵列|数字行向量核平滑密度支持,指定为逗号分隔的一对组成的万博1manbetx'万博1manbetx支持'
和“积极”
,“无限”
,一个字符串数组,一个单元阵列,或一个数字行向量。该软件适用的内核平滑密度到指定区域。
此表概括了用于设置的核平滑密度区域的可用选项。
价值 | 描述 |
---|---|
1×2数字行向量 | 例如,[鲁] ,其中大号 和ü 被有限分别降低和上界,对于支持密度。万博1manbetx |
“积极” |
密度支持都是正的真实值。万博1manbetx |
“无限” |
密度的支持是所有真正的价万博1manbetx值。 |
如果指定了1逐P串阵列或电池阵列,用含有在表和包含在表格中的任何值的单元阵列中的每个元件的任何文本值字符串数组中的每个元素,则该软件训练使用元件的内核支持分级万博1manbetxĴ为特征Ĵ在X
。该软件忽略的要素内核
与分布为的预测器不对应'核心'
。
您必须指定至少一个预测有分布'核心'
要另外指定内核
,万博1manbetx
,或宽度
。
例子:'KS万博1manbetxSupport',{[ - 10,20], '无界'}
数据类型:烧焦
|串
|细胞
|双
“宽度”
-核平滑窗口宽度内核平滑窗口宽度,指定为逗号分隔对所组成的“宽度”
以及由数值值、数值列向量、数值行向量或标量组成的矩阵。
假设有ķ一流的水平,P预测。此表概括了用于设置内核平滑窗口宽度可用的选项。
价值 | 描述 |
---|---|
ķ-通过-P数值矩阵 | 元素(j k,)指定预测器的宽度Ĵ在班上ķ。 |
ķ×1数值列向量 | 元素ķ指定类的所有预测器的宽度ķ。 |
1逐P数字行向量 | 元素Ĵ指定所有类级别预测器的宽度Ĵ。 |
标量 | 指定在所有类所有功能的带宽。 |
默认情况下,软件通过使用高斯分布的最优值,自动为每个预测器和类的组合选择默认宽度。如果您指定宽度
它包含为NaN
,然后软件选择包含元素的宽度为NaN
年代。
您必须指定至少一个预测有分布'核心'
要另外指定内核
,万博1manbetx
,或宽度
。
例子:“宽度”,[楠楠]
数据类型:双
|结构
“CVPartition”
-交叉验证分区[]
(默认)|cvpartition
分区对象交叉验证分区,指定为逗号分隔的对,由“CVPartition”
和cvpartition
分区对象通过创建cvpartition
。分区对象指定交叉验证的类型和用于训练和验证集的索引。
要创建交叉验证的模型,您可以仅使用以下四个名称-值对参数之一:CVPartition
,坚持
,KFold
,或忽略
。
例子:假设您创建了一个随机分区,用于对500个观察进行5次交叉验证CVP = cvpartition(500, 'KFold',5)
。然后,您可以通过使用指定交叉验证模型“CVPartition”,本量利
。
“坚持”
-用于抵抗验证数据的分数用于坚持验证的部分数据,指定为逗号分隔的对,由“坚持”
和范围内的(0,1)的标量值。如果您指定“不吸墨性”,对
,那么软件完成以下步骤:
随机选择和储备P * 100
%的数据作为验证数据,并使用剩下的数据训练模型。
存储在紧凑,训练模型训练有素的
交叉验证模型的性能。
要创建交叉验证的模型,您可以仅使用以下四个名称-值对参数之一:CVPartition
,坚持
,KFold
,或忽略
。
例子:“坚持”,0.1
数据类型:双
|单
'KFold'
-褶皱的数10
(默认)|正整数值大于1的褶皱的数目在一个交叉验证模型中使用,指定为逗号分隔的一对组成的'KFold'
和一个大于1的正整数。如果您指定'KFold',K
,那么软件完成以下步骤:
将数据随机划分为ķ
集。
对于每个集合,保留该集合作为验证数据,使用另一个集合训练模型ķ
- 1集。
存储ķ
在的细胞结构紧凑,训练的模型ķ
-by-1在细胞中载体训练有素的
交叉验证模型的性能。
要创建交叉验证的模型,您可以仅使用以下四个名称-值对参数之一:CVPartition
,坚持
,KFold
,或忽略
。
例子:'KFold',5
数据类型:单
|双
'忽略'
-留一法交叉验证标志“关闭”
(默认)|'上'
left -one-out交叉验证标志,指定为逗号分隔的对,由'忽略'
和'上'
或“关闭”
。如果您指定“Leaveout”,“上”
,然后,针对每一个ñ观察(其中ñ不包括缺失观测的观测数,是否在NumObservations
,软件完成以下步骤:
储备观测作为验证数据,并使用其他训练模型ñ- 1点意见。
存储ñ在的细胞结构紧凑,训练的模型ñ-by-1在细胞中载体训练有素的
交叉验证模型的性能。
要创建交叉验证的模型,您可以仅使用以下四个名称-值对参数之一:CVPartition
,坚持
,KFold
,或忽略
。
例子:“Leaveout”,“上”
'CategoricalPredictors'
-分类预测名单“所有”
分类预测列表中,指定为逗号分隔的一对组成的'CategoricalPredictors'
并在此表中的值之一。
价值 | 描述 |
---|---|
正整数的向量 | 向量中的每个条目是对应于预测数据的列(索引值X 或TBL )包含分类变量的。 |
逻辑向量 | 一个真正的 条目表示预测数据的对应的列(X 或TBL )为分类变量。 |
汉字字模 | 矩阵的每一行都是一个预测变量的名称。该名称必须在条目匹配PredictorNames 。垫多余的空格的名字,这样的字符矩阵的每一行具有相同的长度。 |
串阵列或字符向量的单元阵列 | 数组中的每个元素是一个预测变量的名称。该名称必须在条目匹配PredictorNames 。 |
“所有” |
所有的预言都是绝对的。 |
默认情况下,如果预测器数据在表中(TBL
),fitcnb
假设变量是分类的,如果它是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元数组。如果预测数据为矩阵(X
),fitcnb
假设所有的预测都是连续的。要确定任何其他预测作为分类预测,指定它们通过使用'CategoricalPredictors'
名称-值对的论点。
对于已识别的范畴谓词,fitcnb
使用多变量多项分布。有关详细信息,请参阅DistributionNames
和算法。
例子:“CategoricalPredictors”、“所有”
数据类型:单
|双
|合乎逻辑
|烧焦
|串
|细胞
“类名”
-类的名字中使用培训类名称,以用于训练,指定为逗号分隔的一对组成的“类名”
和分类,字符或字符串数组,逻辑或数字载体,或字符向量的单元阵列。类名
必须具有相同的数据类型ÿ
。
如果类名
是一个字符数组,那么每个元素必须对应于数组的一行。
使用“类名”
至:
培训期间订购的类。
指定与类顺序对应的任何输入或输出参数维的顺序。例如,使用“类名”
指定尺寸的顺序成本
或分类分数返回的列顺序预测
。
选择要培训的类的子集。例如,假设所有不同的类名集合在ÿ
是{ 'A', 'B', 'C'}
。要使用的观测从班训练模型“一个”
和“c”
只是,指定“类名”,{' a ', ' c '}
。
作为默认值类名
是集合所有不同的类名ÿ
。
例子:'类名',{ 'B', 'G'}
数据类型:分类
|烧焦
|串
|合乎逻辑
|单
|双
|细胞
'成本'
-错误分类的成本一个点的误分类的成本,指定为逗号分隔的一对组成的'成本'
和以下情况之一:
默认值是成本(I,J)= 1
如果I〜= j的
,成本(I,J)= 0
如果我= j的
。
例子:'费用',结构( '类名',{{ 'B', 'G'}}, 'ClassificationCosts',[0 0.5 1 0])
数据类型:单
|双
|结构
'PredictorNames'
-预测变量名预测器变量名,指定为逗号分隔的一对组成的'PredictorNames'
和唯一的名称或唯一的字符向量的单元阵列的一个字符串数组。的功能'PredictorNames'
取决于所提供的训练数据的方式。
如果提供X
和ÿ
,然后你可以使用'PredictorNames'
给预测变量X
名。
名字的顺序PredictorNames
的列顺序必须对应X
。那是,PredictorNames {1}
是X(:,1)
,PredictorNames {2}
是X(:,2)
, 等等。也,尺寸(X,2)
和元素个数(PredictorNames)
必须相等。
默认情况下,PredictorNames
是{x1, x2,…}
。
如果提供TBL
,然后你可以使用'PredictorNames'
选择在训练中使用的预测变量。那是,fitcnb
只使用在预测变量PredictorNames
和在训练响应变量。
PredictorNames
一定是?的子集Tbl.Properties.VariableNames
并且不能包含响应变量的名称。
默认情况下,PredictorNames
包含所有预测变量的名称。
一个好的做法是使用任何训练指定预测'PredictorNames'
或公式
只要。
例子:'PredictorNames',{ 'SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'}
数据类型:串
|细胞
“在此之前”
-先验概率'经验'
(默认)|'制服'
|标量向量|结构先验概率为每个类,指定为逗号分隔的一对组成的“在此之前”
并在此表中的值。
价值 | 描述 |
---|---|
'经验' |
类先验概率是相对类频率在ÿ 。 |
'制服' |
所有类先验概率都等于1/ķ,其中ķ是的类的数量。 |
数字矢量 | 每个元素是一个类的先验概率。根据命令元素Mdl .ClassNames 或使用指定的顺序类名 名称-值对的论点。该软件标准化的元件,使得它们的和为1 。 |
结构 | 的结构
|
如果为两者都设置值权重
和之前
中,权重被重新归一化,以加起来的先验概率的值在各自的类中。
例子:“前”,“均匀”
数据类型:烧焦
|串
|单
|双
|结构
'ResponseName'
-响应变量名“Y”
(默认)|特征向量|串标响应变量名,指定为逗号分隔的一对组成的'ResponseName'
和字符向量或标量的字符串。
如果提供ÿ
,然后你可以使用'ResponseName'
指定响应变量的名称。
如果提供ResponseVarName
或公式
,那么你就不能使用'ResponseName'
。
例子:'ResponseName', '响应'
数据类型:烧焦
|串
“ScoreTransform”
-分数转换'没有'
(默认)|'doublelogit'
|'invlogit'
|“ismax”
|'Logit模型'
|功能手柄|……得分变换,指定为逗号分隔的一对组成的“ScoreTransform”
和字符矢量,标量的字符串,或功能句柄。
此表总结了可用的特征向量和字符串标量。
价值 | 描述 |
---|---|
'doublelogit' |
1 /(1 +Ë-2X) |
'invlogit' |
日志(X/(1 -X)) |
“ismax” |
设置得分与得分最高的类1,并设置分数为所有其他类0 |
'Logit模型' |
1 /(1 +Ë-X) |
'没有' 或“身份” |
X(无转换) |
'标志' |
-1X< 0 0X= 0 1X> 0 |
“对称” |
2X- 1 |
'symmetricismax' |
将得分最高的类的得分设置为1,并将所有其他类的得分设置为-1 |
“symmetriclogit” |
2 / (1 +Ë-X) - 1 |
对于MATLAB功能,或者你定义一个函数,使用它的功能句柄得分变换。功能句柄必须接受矩阵(原始分)并返回相同的尺寸(转化分数)的矩阵。
例子:'ScoreTransform', '分对数'
数据类型:烧焦
|串
|function_handle
“权重”
-观察权重TBL
'OptimizeHyperparameters'
-参数来优化'没有'
(默认)|'汽车'
|“所有”
|符合条件的参数名称的字符串数组或单元格数组|向量的optimizableVariable
对象参数来优化,指定为逗号分隔的一对组成的'OptimizeHyperparameters'
和以下情况之一:
'没有'
- 不要优化。
'汽车'
- 用{ 'DistributionNames', '宽度'}
。
“所有”
- 优化所有符合条件的参数。
String数组或符合条件的参数名称的单元阵列。
向量的optimizableVariable
对象,通常输出超参数
。
优化尝试最小化交叉验证的损失(错误)fitcnb
通过改变参数。有关交叉验证损耗信息(虽然在不同的背景下),见分类损失。要控制交叉验证类型和优化的其他方面,请使用HyperparameterOptimizationOptions
名称 - 值对。
'OptimizeHyperparameters'
值覆盖使用其他名称-值对参数设置的任何值。例如,设置'OptimizeHyperparameters'
来'汽车'
导致'汽车'
值适用。
符合条件的参数fitcnb
是:
DistributionNames
-fitcnb
搜索中'正常'
和'核心'
。
宽度
-fitcnb
实际值之间的搜索,默认登录缩放范围[MinPredictorDiff / 4,MAX(MaxPredictorRange,MinPredictorDiff)]
。
内核
-fitcnb
搜索中'正常'
,'框'
,“epanechnikov”
,'三角形'
。
通过使向量设置非默认参数optimizableVariable
具有非默认值的对象。例如,
加载fisheririsPARAMS =超参数('fitcnb',MEAS,物种);PARAMS(2).Range = [1E-2,1e2];
通过参数个数
作为价值OptimizeHyperparameters
。
默认情况下,迭代显示出现在命令行,并重复根据在优化超参数的数量出现。对于优化和情节,目标函数是日志(1 +交叉验证损失)用于回归,用于分类的误分类率。要控制迭代显示,请设置详细
领域“HyperparameterOptimizationOptions”
名称-值对的论点。为了控制地块,设置ShowPlots
领域“HyperparameterOptimizationOptions”
名称-值对的论点。
对于一个示例,请参见优化朴素贝叶斯分类器。
例子:'汽车'
“HyperparameterOptimizationOptions”
-优化选项选项的优化,指定为逗号分隔对组成“HyperparameterOptimizationOptions”
和结构。这种说法修改的效果OptimizeHyperparameters
名称-值对的论点。在结构上所有字段都是可选的。
字段名称 | 值 | 默认 |
---|---|---|
优化 |
|
'bayesopt' |
AcquisitionFunctionName |
采集功能名称中包含 |
“预计-改善每秒加” |
MaxObjectiveEvaluations |
目标函数评估的最大数量。 | 30. 对于'bayesopt' 或'randomsearch' ,以及整个网格'gridsearch' |
MAXTIME |
时间限制,指定为正实。时间限制以秒为单位,以 |
天道酬勤 |
NumGridDivisions |
对于'gridsearch' 中,在每个维度的值的数量。该值可以是正整数给出的值的数目为每个维,或适用于所有尺寸的标量的向量。此字段分类变量忽略。 |
10 |
ShowPlots |
指示是否显示图形的逻辑值。如果真正的 ,本场地块对迭代次数的最佳目标函数值。如果有一个或两个优化参数,如果优化 是'bayesopt' , 然后ShowPlots 并根据参数绘制目标函数的模型。 |
真正的 |
SaveIntermediateResults |
逻辑值,指示何时是否保存结果优化 是'bayesopt' 。如果真正的 ,该字段将重写一个名为“BayesoptResults” 在每次迭代。该变量是一个BayesianOptimization 目的。 |
假 |
详细 |
显示到命令行。
有关详细信息,请参阅 |
1 |
UseParallel |
逻辑值指示是否并行运行贝叶斯优化,这需要并行计算工具箱™。由于并行定时的nonreproducibility,平行贝叶斯优化不一定得到重复的结果。有关详细信息,请参阅平行的贝叶斯优化。 | 假 |
重新分割 |
逻辑值指示是否在每次迭代重新对交叉验证。如果
|
假 |
使用不超过以下三个字段的名字之一。 | ||
CVPartition |
一个cvpartition 对象,如通过创建cvpartition 。 |
'Kfold',5 如果你不指定任何交叉验证领域 |
坚持 |
一个范围内的标量(0,1) 表示抵抗率。 |
|
Kfold |
一个大于1的整数。 |
例子:'HyperparameterOptimizationOptions',结构( 'MaxObjectiveEvaluations',60)
数据类型:结构
Mdl
- 训练有素的朴素贝叶斯分类模型ClassificationNaiveBayes
模型对象|ClassificationPartitionedModel
旨在模型对象训练有素的朴素贝叶斯分类模型,返回为ClassificationNaiveBayes
模型对象或ClassificationPartitionedModel
交叉验证的模型对象。
如果你设置任何的名称 - 值对参数KFold
,坚持
,CrossVal
,或CVPartition
, 然后Mdl
是一个ClassificationPartitionedModel
交叉验证的模型对象。除此以外,Mdl
是一个ClassificationNaiveBayes
模型对象。
要引用的特性Mdl
,使用点记号。例如,访问估计分布参数,输入Mdl.DistributionParameters
。
在一袋令牌模型,预测值Ĵ是的令牌出现的非负数Ĵ在此观察。在本多项模型类别(条块)的数量是不同的令牌的数量,即,预测的数目。
朴素贝叶斯是应用于密度估计于该数据的分类算法。
该算法利用贝叶斯定理,和(天真)假定预测器条件独立,给定的类。虽然假设在实践中通常侵犯,朴素贝叶斯分类往往以产生具有鲁棒性来偏置类密度估计,特别是在后为0.5(决策边界)后验分布[1]。
朴素贝叶斯分类器分配观测最可能的类(在换句话说,最大后验决策规则)。明确地说,算法:
估计每类中预测的密度。
模型根据贝叶斯法则后验概率。也就是说,对于所有ķ= 1,…,ķ,
哪里:
ÿ是对应于一个观测值的类索引的随机变量。
X1、……XP是观测结果的随机预测。
是先验概率,一个类索引是ķ。
分类通过估计用于每个类别的后验概率,然后观察分配观测到类产生最大后验概率。
如果预测器组成一个多项分布,则该后验概率 哪里 是一个多项分布的概率质量函数。
如果您指定“DistributionNames”、“锰”
当训练Mdl
运用fitcnb
,那么软件配合使用多项分布一袋令牌模型。该软件商店的概率是令牌Ĵ
出现在课堂上ķ
在属性DistributionParameters {
。使用添加剂平滑[2],估计概率为ķ
,Ĵ
}
哪里:
这是令牌出现的加权数Ĵ在班上ķ。
ñķ是在类的观测数ķ。
是用于观察的重量一世。软件对一个类内的权重进行规范化,这样它们的和就等于这个类的先验概率。
这是在类中的所有令牌出现的总加权数ķ。
如果您指定'DistributionNames', 'mvmn'
当训练Mdl
运用fitcnb
, 然后:
对于每一个预测,该软件收集了独特级别的列表,存储在排序列表CategoricalLevels
,并认为每级的Bin。每个预测器/类的组合是分离的,独立多项随机变量。
为预测Ĵ
在班上ķ使用列表中的每个分类级别的软件计数实例存储在CategoricalLevels {
。Ĵ
}
该软件存储该预测的概率Ĵ
, 在班上ķ
,有水平大号在属性DistributionParameters {
,在各级ķ
,Ĵ
}CategoricalLevels {
。使用添加剂平滑[2],估计概率为Ĵ
}
哪里:
哪个是针对哪个预测器的观测值的加权数Ĵ=大号在班上ķ。
ñķ是在类的观测数ķ。
如果Xij=大号,否则为0。
是用于观察的重量一世。软件对一个类内的权重进行规范化,这样它们的和就等于这个类的先验概率。
米Ĵ在预测器不同的电平的数量Ĵ。
米ķ是在类观测的加权数ķ。
[1] Hastie, T., R. Tibshirani和J. Friedman。统计学习的要素, 第二版。纽约:施普林格,2008年。
[2]曼宁,C.D。,P.拉加,和M.Schütze。现代信息检索纽约州:剑桥大学出版社,2008年。
该功能支持与限制高大阵列:万博1manbetx
万博1manbetx支持的语法是:
MDL = fitcnb(TBL,Y)
MDL = fitcnb(X,Y)
MDL = fitcnb(___,名称,值)
有关内核密度,交叉验证,和超参数优化选项不被支持。万博1manbetx支持的名万博1manbetx称 - 值对参数是:
'DistributionNames'
-'核心'
不支持的值。万博1manbetx
'CategoricalPredictors'
'成本'
'PredictorNames'
“在此之前”
'ResponseName'
“ScoreTransform”
“权重”
- 值必须是一个高大的阵列。
欲了解更多信息,请参阅用于内存不足数据的高数组(MATLAB)。
并行运行,设置'UseParallel'
选项真正的
。
要执行并行超参数优化,请使用'HyperparameterOptions',结构( 'UseParallel',真)
名称 - 值对的参数在调用此函数。
有关并行超参数优化的更多信息,请参阅平行的贝叶斯优化。
有关并行计算更一般的信息,请参见运行MATLAB函数与自动并行支持万博1manbetx(并行计算工具箱)。
您单击对应于该MATLAB命令的链接:
在MATLAB命令窗口中输入它运行的命令。Web浏览器不支持MATLAB的命令。万博1manbetx
您还可以选择从下面的列表中的网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。