主要内容

fitcnb

训练多类朴素贝叶斯模型

描述

Mdl= fitcnb (资源描述ResponseVarName返回一个多类朴素贝叶斯模型(Mdl),由表中预测者训练资源描述和变量中的类标签资源描述。ResponseVarName

Mdl= fitcnb (资源描述公式返回一个多类朴素贝叶斯模型(Mdl),由表中预测者训练资源描述公式是否有一个反应的解释模型和一个预测变量子集资源描述过去适合Mdl

Mdl= fitcnb (资源描述Y返回一个多类朴素贝叶斯模型(Mdl),由表中预测者训练资源描述和数组中的类标签Y

例子

Mdl= fitcnb (XY返回一个多类朴素贝叶斯模型(Mdl),由预测者训练X和类标签Y

例子

Mdl= fitcnb (___名称,值返回朴素贝叶斯分类器,其中包含由一个或多个指定的附加选项名称,值使用前面的任何语法对参数。例如,您可以指定分布来建模数据、类的先验概率或内核平滑窗口带宽。

例子

全部折叠

载入费雪的虹膜数据集。

负载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)”)传奇(“塞托萨”“多色的”“维吉尼亚”)举行

图中包含一个轴对象。标题为Naive Bayes Classifier—Fisher’s Iris Data的轴对象包含类型线、函数轮廓6个对象。这些物品代表着维珍卡。

您可以使用名称-值对参数更改默认发行版“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.42800.3791,分别。

估计混淆矩阵Mdl1

isLabels1 = resubPredict (Mdl1);ConfusionMat1 = confusionchart (Y, isLabels1);

图中包含ConfusionMatrixChart类型的对象。

元素(jk)的混淆矩阵图表示该软件分类的观察结果的数量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);

图中包含ConfusionMatrixChart类型的对象。

基于混淆矩阵,这两个分类器在训练样本中表现相似。

载入费雪的虹膜数据集。

负载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 |

图中包含一个轴对象。标题为Min objective vs. Number of function evaluated的axis对象包含2个类型为line的对象。这些对象代表最小观测目标、最小估计目标。

图中包含一个轴对象。以目标函数模型为标题的轴对象包含线、面、轮廓等5个对象。这些对象表示观测点,模型均值,下一个点,模型最小可行值。

__________________________________________________________ 优化完成。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。响应变量的长度和中的行数资源描述必须是相等的。

数据类型:表格

中的响应变量名,指定为变量名资源描述

您必须指定ResponseVarName作为字符向量或字符串标量。例如,如果响应变量Y存储为资源描述。Y,则指定为“Y”。否则,软件将处理资源描述,包括Y,作为训练模型时的预测因子。

response变量必须是一个分类数组、字符数组或字符串数组;逻辑或数字向量;或者字符向量的单元格数组。如果Y是字符数组,则响应变量的每个元素必须对应于数组的一行。

方法指定类的顺序是一种好的实践一会名称-值参数。

数据类型:烧焦|字符串

响应变量和预测变量子集的解释模型,指定为以下形式的字符向量或字符串标量“Y ~ x1 + x2 + x3”.在这种形式,Y表示响应变量,和x1x2,x3表示预测变量。

中指定变量的子集资源描述作为训练模型的预测器,使用一个公式。如果你指定一个公式,那么软件不使用任何变量资源描述没有出现在公式

公式中的变量名必须是其中的两个变量名资源描述Tbl.Properties.VariableNames)和有效的MATLAB®标识符。您可以验证变量名资源描述通过使用isvarname函数。如果变量名无效,则可以使用matlab.lang.makeValidName函数。

数据类型:烧焦|字符串

将朴素贝叶斯分类器训练到的类标签,指定为类别、字符或字符串数组、逻辑或数字向量,或字符向量的单元数组。的每个元素Y的对应行定义类的成员关系XY金宝app支持K班级级别。

如果Y是字符数组,则每行必须对应一个类标签。

的长度Y的行数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”名称-值参数。

朴素贝叶斯的选项

全部折叠

数据分布fitcnb用于对数据建模,指定为逗号分隔的对,由“DistributionNames”以及字符向量或字符串标量、字符串数组或字符向量单元格数组。

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

如果指定字符向量或字符串标量,则软件将使用该分布建模所有特征。如果你指定一个1乘-P字符串数组或单元格数组的字符向量,然后软件模型的特征j使用元素中的分布j的数组。

默认情况下,软件将所有指定的预测器设置为分类预测器(使用分类预测因子名称-值对参数)“mvmn”.否则,默认分布为“正常”

必须指定至少一个预测器具有分布“内核”补充说明内核金宝app,或宽度

例子:“DistributionNames”、“锰”

例子:'DistributionNames',{'kernel','normal','kernel'}

内核平滑类型,指定为逗号分隔对组成“内核”以及字符向量或字符串标量、字符串数组或字符向量的单元格数组。

此表总结了用于设置内核平滑密度区域的可用选项u}表示指示函数。

价值 内核 公式
“盒子” 框(统一)

f x 0.5 | x | 1

“epanechnikov” 叶帕涅奇尼科夫

f x 0.75 1 x 2 | x | 1

“正常” 高斯

f x 1 2 π 经验值 0.5 x 2

“三角形” 三角形的

f x 1 | x | | x | 1

如果你指定一个1乘-P字符串数组或单元格数组,数组中的每个元素都包含表中的任意值,然后软件使用元素中的内核平滑类型训练分类器j为特征jX. 该软件忽略了内核不对应于其分布为“内核”

必须指定至少一个预测器具有分布“内核”补充说明内核金宝app,或宽度

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

核平滑密度支持,指定为逗号分隔对组成金宝app“金宝app支持”“积极”“无限”、字符串数组、单元格数组或数字行向量。该软件将核平滑密度应用到指定区域。

这个表总结了设置核平滑密度区域的可用选项。

价值 描述
1乘2的数字行向量 例如[L,U],在那里lU分别为密度支持的有限上界和下界。金宝app
“积极” 密度支持都是正的实值。金宝app
“无限” 密度支持都是真实值。金宝app

如果你指定一个1乘-P字符串数组或单元格数组,字符串数组中的每个元素包含表中的任意文本值,单元格数组中的每个元素包含表中的任意值,然后软件使用element中的内核支持来训练分类器金宝appj为特征jX. 该软件忽略了内核不对应于其分布为“内核”

必须指定至少一个预测器具有分布“内核”补充说明内核金宝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,或宽度

例子:“宽度”,南南

数据类型:|结构体

交叉验证选择

全部折叠

交叉验证标志,指定为逗号分隔对,由“Crossval”“上”“关闭”

如果您指定“上”,然后软件实现10倍交叉验证。

要覆盖此交叉验证设置,请使用以下名称-值对参数之一:CVD分区坚持肯福尔德,或Leaveout.要创建交叉验证模型,一次只能使用一个交叉验证名称-值对参数。

或者,稍后通过传递进行交叉验证Mdlcrossval

例子:“CrossVal”,“上”

交叉验证分区,指定为cvpartition由创建的分区对象cvpartition.分区对象指定交叉验证的类型以及训练集和验证集的索引。

要创建一个交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVD分区坚持肯福尔德,或Leaveout

例子:假设您使用以下方法创建了一个随机分区,用于对500个观测数据进行5倍交叉验证本量利= cvpartition(500年,“KFold”,5).然后,您可以使用“cvp”,cvp

用于抵抗验证的数据的一部分,指定为范围(0,1)中的标量值。如果您指定‘坚持’,p,则软件完成以下步骤:

  1. 随机选择和保留p*100%的数据作为验证数据,并使用其余的数据训练模型。

  2. 将经过训练的小型模型存储在训练交叉验证模型的性质。

要创建一个交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVD分区坚持肯福尔德,或Leaveout

例子:“坚持”,0.1

数据类型:|

在交叉验证模型中使用的折叠数,指定为大于1的正整数。如果您指定KFold, k,则软件完成以下步骤:

  1. 将数据随机划分为k集。

  2. 对于每个集合,保留该集合作为验证数据,并使用另一个来训练模型k- 1集。

  3. 存储k紧凑、训练有素的模型k-by-1细胞载体训练交叉验证模型的性质。

要创建一个交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVD分区坚持肯福尔德,或Leaveout

例子:“KFold”,5

数据类型:|

省略一交叉验证标志,指定为“上”“关闭”.如果您指定“Leavout”和“on”,那么对于每一个n观察(n不包括遗漏的观测数据,观测数据的数量是否在NumObservations模型属性),软件完成以下步骤:

  1. 保留一个观测值作为验证数据,使用另一个来训练模型n- 1的观察。

  2. 存储n紧凑,训练模型在一个n-by-1细胞载体训练交叉验证模型的性质。

要创建一个交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVD分区坚持肯福尔德,或Leaveout

例子:“Leavout”和“on”

其他分类选项

全部折叠

分类预测器列表,指定为该表中的值之一。

价值 描述
正整数向量

向量中的每一项都是一个指标值,表明相应的预测器是分类的。索引值在1到之间p,在那里p为用于训练模型的预测器数量。

如果fitcnb使用输入变量的子集作为预测器,然后函数仅使用子集为预测器编制索引分类预测因子值不计算响应变量、观察权重变量或函数不使用的任何其他变量。

逻辑向量

一个真正的进入意味着相应的预测器是绝对的。向量的长度是p

字符矩阵 矩阵的每一行都是一个预测变量的名称。名称必须与里面的条目相匹配PredictorNames.用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。
字符向量的字符串数组或单元格数组 数组中的每个元素都是一个预测变量的名称。名称必须与里面的条目相匹配PredictorNames
“全部” 所有的预测都是绝对的。

默认情况下,如果预测器数据在表中(资源描述),fitcnb假设变量是分类变量,如果它是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元格数组。如果预测器数据是矩阵(X),fitcnb假设所有预测器都是连续的。要将任何其他预测器标识为分类预测器,请使用“CategoricalPredictors”名称-值参数。

对于确定的分类预测因子,fitcnb使用多元多项分布。有关详细信息,请参见分配名称算法

例子:“CategoricalPredictors”、“所有”

数据类型:||逻辑|烧焦|字符串|细胞

用于训练的类名,指定为分类数组、字符数组或字符串数组;逻辑或数字向量;或者字符向量的单元格数组。一会中的响应变量必须具有相同的数据类型资源描述Y

如果一会是字符数组,则每个元素必须与数组的一行相对应。

使用一会:

  • 在培训期间指定课程的顺序。

  • 指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用一会指定尺寸的顺序费用或返回的分类分数的列顺序预测

  • 选择要训练的类的子集。例如,假设Y(“a”、“b”、“c”).使用来自类的观察来训练模型“a”“c”仅指定“类名”[“a”、“c”]

的默认值一会中响应变量中所有不同类名的集合资源描述Y

例子:“类名”,(“b”,“g”)

数据类型:分类|烧焦|字符串|逻辑|||细胞

一个点的错误分类代价,指定为逗号分隔对组成“成本”以及以下其中之一:

  • 方阵,成本(i, j)是将一个点分类为类的成本j如果它的真实类别是(即,行对应真正的类,列对应预测的类)。的相应行和列的类顺序费用,另外指定一会名称-值对的论点。

  • 结构年代有两个领域:S.ClassNames将组名作为与Y,S.ClassificationCosts包含代价矩阵。

默认值是成本(i, j) = 1如果i~=j,成本(i, j) = 0如果我=我

例子:'Cost',struct('ClassNames',{{'b','g'}},'ClassificationCosts',[0.5;1 0])

数据类型:||结构体

预测器变量名,指定为具有惟一名称的字符串数组或具有惟一字符向量的单元格数组。的功能PredictorNames这取决于你提供培训数据的方式。

  • 如果你提供XY,然后您可以使用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
结构

建筑物年代两个字段:

  • S.ClassNames将类名作为与相同类型的变量包含Y

  • S.ClassProbs包含相应先验概率的向量。软件将元素标准化,使其总和为1

如果为这两个设置值权重之前时,权重被重归一化,使其与所属类的先验概率值相加。

例子:“前”、“制服”

数据类型:烧焦|字符串|||结构体

响应变量名称,指定为字符向量或字符串标量。

  • 如果你提供Y,然后您可以使用ResponseName为响应变量指定名称。

  • 如果你提供ResponseVarName公式,则不能使用ResponseName

例子:“ResponseName”、“反应”

数据类型:烧焦|字符串

分数转换,指定为字符向量、字符串标量或函数句柄。

该表总结了可用的字符向量和字符串标量。

价值 描述
“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

观察权重,指定为逗号分隔对,由“重量”和一个正数的数字向量或变量名资源描述.该软件对每一行的观察结果进行权衡X资源描述对应的值在权重.的大小权重必须等于X资源描述

如果您将输入数据指定为表资源描述,然后权重可以是变量的名称资源描述包含数字向量的。在这种情况下,必须指定权重作为字符向量或字符串标量。例如,如果权重向量W存储为资源描述。W,则指定为' W '。否则,软件将处理资源描述,包括W,作为预测器或训练模型时的反应。

该软件可实现权重求和为各类的先验概率值。

默认情况下,权重(n, 1),在那里n观察的次数在吗X资源描述

数据类型:||烧焦|字符串

Hyperparameter优化

全部折叠

要优化的参数,指定为逗号分隔的对“OptimizeHyperparameters”以及以下其中之一:

  • “没有”-不要优化。

  • “汽车”——使用{“DistributionNames”、“宽度”}

  • “所有”-优化所有符合条件的参数。

  • 符合条件的参数名称的字符串数组或单元格数组。

  • 向量的optimizableVariable对象,通常是hyperparameters

优化尝试最小化交叉验证损失(错误)fitcnb通过改变参数。有关交叉验证丢失的信息(尽管在不同的上下文中),请参见分类损失.要控制交叉验证类型和其他方面的优化,请使用HyperparameterOptimizationOptions名称-值对。

请注意

的值“OptimizeHyperparameters”重写使用其他名称-值参数指定的任何值。例如,设置“OptimizeHyperparameters”“汽车”原因fitcnb优化与“汽车”选项和忽略超参数的任何指定值。

符合条件的参数fitcnb是:

  • 分配名称- - - - - -fitcnb搜索中“正常”“内核”

  • 宽度- - - - - -fitcnb在实际值中搜索,默认在范围内按对数缩放[MinPredictor Diff/4,最大值(MaxPredictor范围,MinPredictor Diff)]

  • 内核- - - - - -fitcnb搜索中“正常”“盒子”“epanechnikov”,“三角形”

通过传递的向量来设置非默认参数optimizableVariable具有非默认值的对象。例如

负载fisheriris参数=超参数(“fitcnb”量,物种);参数(2)。范围=(1飞行,1 e2);

通过参数个数的价值OptimizeHyperparameters

默认情况下,迭代显示出现在命令行,并根据优化中超参数的数量显示绘图。对于优化和绘图,目标函数为误分类率。若要控制迭代显示,请设置详细的场的“HyperparameterOptimizationOptions”名称值参数。若要控制绘图,请设置ShowPlots场的“HyperparameterOptimizationOptions”名称-值参数。

例如,请参见优化朴素贝叶斯分类器

例子:“汽车”

作为结构指定的优化选项。该参数修改OptimizeHyperparameters名称-值参数。结构中的所有字段都是可选的。

字段名 默认的
优化器
  • “bayesopt”-使用贝叶斯优化。在内部,这个设置调用bayesopt

  • “gridsearch”-使用网格搜索NumGridDivisions每个维度值。

  • “randomsearch”-随机搜索MaxObjectiveEvaluations点。

“gridsearch”以随机顺序搜索,使用均匀抽样而不从网格中替换。优化之后,您可以使用该命令获得一个按网格顺序排列的表sortrows (Mdl.HyperparameterOptimizationResults)

“bayesopt”
AcquisitionFunctionName

  • “expected-improvement-per-second-plus”

  • “expected-improvement”

  • “预期改善加成”

  • “expected-improvement-per-second”

  • “lower-confidence-bound”

  • “改善概率”

获取函数的名称包括每秒不会产生可重复的结果,因为优化依赖于目标函数的运行时间。获取函数的名称包括+当他们过度开发一个区域时,调整他们的行为。有关详细信息,请参见获取函数类型

“expected-improvement-per-second-plus”
MaxObjectiveEvaluations 目标函数求值的最大次数。 30.“bayesopt”“randomsearch”,和整个网格“gridsearch”
MaxTime

时间限制,指定为正实标量。时间限制以秒为单位,用抽搐toc.运行时间可以超过MaxTime因为MaxTime不中断函数计算。

NumGridDivisions “gridsearch”,表示每个维度中值的数量。该值可以是一个给出每个维度值数量的正整数向量,也可以是适用于所有维度的标量。对于分类变量,该字段被忽略。 10
ShowPlots 指示是否显示绘图的逻辑值。如果真正的,该域根据迭代次数绘制最佳观测目标函数值。如果你使用贝叶斯优化(优化器“bayesopt”),则该域也绘制出最佳估计目标函数值。的最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察)BestSoFar (estim)。列的迭代显示,分别。您可以在属性中找到这些值目标最小跟踪EstimatedObjectiveMinimumTraceMdl。HyperparameterOptimizationResults.如果问题包含一个或两个贝叶斯优化的优化参数,那么ShowPlots还根据参数绘制目标函数的模型。 真正的
SaveIntermediateResults 逻辑值,指示在执行以下操作时是否保存结果优化器“bayesopt”.如果真正的,此字段将覆盖名为“BayesoptResults”在每一个迭代。变量是aBayesianOptimization对象。
详细的

在命令行显示:

  • 0-没有迭代显示

  • 1——迭代显示

  • 2-重复显示额外的信息

具体操作请参见bayesopt详细的名称-值参数和示例使用贝叶斯优化优化分类器

1
UseParallel 指示是否并行运行贝叶斯优化的逻辑值,需要并行计算工具箱™. 由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。有关详细信息,请参阅平行的贝叶斯优化
重新分区

指示是否在每次迭代时重新划分交叉验证的逻辑值。如果这个字段是,优化器使用单个分区进行优化。

背景真正的通常给出最稳健的结果,因为它考虑了分区噪声。然而,为了得到好的结果,真正的需要至少两倍的函数求值。

使用以下三个选项中的任意一个。
CVD分区 一个cvpartition对象,如所创建的cvpartition “Kfold”,5如果您没有指定交叉验证字段
坚持 范围内的标量(0,1)表示保持分数
Kfold 大于1的整数

例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)

数据类型:结构体

输出参数

全部折叠

训练过的朴素贝叶斯分类模型,返回为分类朴素贝叶斯模型对象或ClassificationPartitionedModel旨在模型对象。

如果您设置任何名称-值对参数肯福尔德坚持CrossVal,或CVD分区,然后Mdl是一个ClassificationPartitionedModel旨在模型对象。否则,Mdl是一个分类朴素贝叶斯模型对象。

引用Mdl,使用点符号。例如,要访问估计的分布参数,输入Mdl。DistributionParameters

更多关于

全部折叠

代币袋模型

在令牌袋模型中,预测器的值j令牌出现的次数是否为非负数j在观察。多项式模型中的类别(箱子)的数量就是不同标记的数量(预测器的数量)。

朴素贝叶斯

朴素贝叶斯是一种将密度估计应用于数据的分类算法。

该算法利用贝叶斯定理,并且(天真地)假设预测值是条件独立的,给定类别。尽管在实践中通常违反该假设,但天真贝叶斯分类器倾向于产生对有偏类别密度估计具有鲁棒性的后验分布,特别是在后验分布为0.5的情况下(决定边界)[1]

朴素贝叶斯分类器将观测值分配给最有可能的类(换句话说,就是最大后验决策规则)。显然,该算法采取以下步骤:

  1. 估计每个类中预测因子的密度。

  2. 根据贝叶斯规则建立后验概率模型。就是说,k= 1,...,K

    P Y k | X 1 .. X P π Y k j 1 P P X j | Y k k 1 K π Y k j 1 P P X j | Y k

    地点:

    • Y是与观测值的类别指数相对应的随机变量。

    • X1,...,XP是对一个观测结果的随机预测。

    • π Y k 类别索引的先验概率是多少k

  3. 通过估计每个类别的后验概率对一个观察进行分类,然后将该观察分配给产生最大后验概率的类别。

如果预测因子组成一个多项分布,则后验概率 P Y k | X 1 .. X P π Y k P n X 1 ... X P | Y k 在哪里 P n X 1 ... X P | Y k 是多项式分布的概率质量函数。

提示

  • 用于对基于计数的数据进行分类,例如bag-of-tokens模型,使用多项分布(例如,集合“DistributionNames”、“锰”).

  • 在训练模型之后,您可以生成C/ c++代码来预测新数据的标签。生成C/ c++代码需要MATLAB编码器™. 有关详细信息,请参阅代码生成简介

算法

  • 中频预测变量j有条件正态分布(见分配名称软件通过计算特定类别的加权平均值和加权标准偏差的无偏估计值,将分布拟合到数据。每节课k

    • 预测器的加权平均数j

      x ¯ j | k y k w x j y k w

      在哪里w重量是用于观察的吗.该软件将一个类中的权重标准化,这样它们的总和就等于该类的先验概率。

    • 预测器加权标准差的无偏估计j

      年代 j | k y k w x j x ¯ j | k 2 z 1 | k z 2 | k z 1 | k 1 / 2

      在哪里z1 |k是类内权重的总和吗kz2 |k是类中权重的平方和k

  • 如果所有预测变量组成条件多项式分布(您指定“DistributionNames”、“锰”),该软件适合使用bag-of-tokens模型.软件存储该令牌的概率j出现在课堂上k在财产中DistributionParameters {kj.使用添加剂平滑[2],估计的概率是

    P 令牌 j | k 1 + c j | k P + c k

    地点:

    • c j | k n k y k x j w y k w 令牌的加权出现次数是多少j在课堂上k

    • nk课堂上观察的次数是多少k

    • w 重量是用于观察的吗.该软件将一个类中的权重标准化,这样它们的总和就等于该类的先验概率。

    • c k j 1 P c j | k 哪个是类中所有令牌出现的加权总数k

  • 中频预测变量j具有条件多元多项分布:

    1. 该软件收集了一个独特的关卡列表,并将排序后的列表存储在其中CategoricalLevels,并将每一层视为一个容器。每个预测器/类组合是一个独立的,独立的多项随机变量。

    2. 为每一个类k,该软件使用存储的列表计算每个类别级别的实例CategoricalLevels {j

    3. 软件储存预测的概率j,在课堂上k,水平l在财产中DistributionParameters {kj,为所有层次CategoricalLevels {j.使用添加剂平滑[2],估计的概率是

      P 预测 j l | k 1 + j | k l j + k

      地点:

      • j | k l n k y k x j l w y k w 哪个是哪个预测值的观察值的加权数j=l在课堂上k

      • nk课堂上观察的次数是多少k

      • x j l 1 如果xijl,否则为0。

      • w 重量是用于观察的吗.该软件将一个类中的权重标准化,这样它们的总和就等于该类的先验概率。

      • j预测器中不同水平的数量j

      • k是课堂上的加权观察数吗k

参考文献

[1] 黑斯蒂、T、R.蒂布什拉尼和J.弗里德曼。统计学习的要素,第二版。纽约:施普林格,2008年。

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

扩展能力

介绍了R2014b