预测
观察使用朴素贝叶斯分类器进行分类
描述
例子
标签测试样本的观察朴素贝叶斯分类器
加载fisheriris
数据集创建。X
作为一个数字矩阵,包含四个花瓣测量150虹膜。创建Y
作为一个单元阵列包含相应的特征向量的虹膜的物种。
负载fisheririsX =量;Y =物种;rng (“默认”)%的再现性
随机观测分割成分层的训练集和测试集,使用类的信息Y
。指定一个抵抗30%样本进行测试。
简历= cvpartition (Y,“坚持”,0.30);
提取训练和测试指标。
trainInds =培训(简历);testInds =测试(简历);
指定的培训和测试数据集。
XTrain = X (trainInds:);YTrain = Y (trainInds);XTest = X (testInds:);欧美= Y (testInds);
使用预测训练朴素贝叶斯分类器XTrain
和类标签YTrain
。推荐的做法是指定类名。fitcnb
假定每一个预测是有条件和正态分布。
Mdl = fitcnb (XTrain YTrain,“类名”,{“setosa”,“多色的”,“virginica”})
Mdl = ClassificationNaiveBayes ResponseName:‘Y’CategoricalPredictors:[]类名:{“setosa”“杂色的”“virginica”} ScoreTransform:“没有一个”NumObservations: 105 DistributionNames:{“正常”“正常”“正常”“正常”}DistributionParameters: {} 3 x4细胞属性,方法
Mdl
是一个培训ClassificationNaiveBayes
分类器。
预测测试样本的标签。
idx = randsample (sum (testInds), 10);标签=预测(Mdl XTest);
显示结果为一组随机的10观察测试样品。
表(欧美(idx),标签(idx),“VariableNames”,…{“TrueLabel”,“PredictedLabel”})
ans =10×2表是_____________ TrueLabel PredictedLabel * * * {‘virginica} {‘virginica}{“癣”}{“癣”}{“癣”}{“癣”}{‘virginica} {‘virginica} {‘setosa} {‘setosa} {‘virginica} {‘virginica} {‘setosa} {‘setosa}{“癣”}{“癣”}{“癣”}{‘virginica}{“癣”}{“癣”}
创建一个混乱图表从真正的标签欧美
和预测的标签标签
。
厘米= confusionchart(欧美、标签);
估计后验概率和误分类成本
估计后验概率和误分类新观测使用朴素贝叶斯分类器的成本。新的观察结果使用节约内存pretrained分类器进行分类。
加载fisheriris
数据集创建。X
作为一个数字矩阵,包含四个花瓣测量150虹膜。创建Y
作为一个单元阵列包含相应的特征向量的虹膜的物种。
负载fisheririsX =量;Y =物种;rng (“默认”)%的再现性
分区数据集分为两组:一个包含训练集,和其他包含新的,未被注意的数据。储备10观察新数据集。
n =大小(X, 1);newInds = randsample (n, 10);第1 = ~ ismember (1: n, newInds);XNew = X (newInds:);YNew = Y (newInds);
使用预测训练朴素贝叶斯分类器X
和类标签Y
。推荐的做法是指定类名。fitcnb
假定每一个预测是有条件和正态分布。
Mdl = fitcnb (X(第1:),Y(第1),…“类名”,{“setosa”,“多色的”,“virginica”});
Mdl
是一个培训ClassificationNaiveBayes
分类器。
节省内存的大小通过减少训练朴素贝叶斯分类器。
CMdl =紧凑(Mdl);谁(“Mdl”,“CMdl”)
类属性名称大小字节CMdl 1 x1 5406 classreg.learning.classif。12731 ClassificationNaiveBayes CompactClassificationNaiveBayes Mdl 1 x1
CMdl
是一个CompactClassificationNaiveBayes
分类器。它使用更少的内存Mdl
因为Mdl
存储数据。
显示的类名CMdl
使用点符号。
CMdl.ClassNames
ans =3 x1细胞{' setosa}{“癣”}{' virginica '}
预测的标签。估计后验概率和预期类误分类代价。
[标签、PostProbs MisClassCost] =预测(CMdl XNew);
比较真实的标签和预测的标签。
表(YNew、标签PostProbs MisClassCost,“VariableNames”,…{“TrueLabels”,“PredictedLabels”,…“PosteriorProbabilities”,“MisclassificationCosts”})
ans =10×4表TrueLabels PredictedLabels PosteriorProbabilities售予MisclassificationCosts * * * _________________________________________ ______________________________________ {‘virginica} {‘virginica} 4.0832 e - 268 4.6422 e-09 1 1 1 4.6422 e-09 {‘setosa} {‘setosa} 1 3.0706 3.0706 4.6719 e-18 e-25 e-18 1 1 {‘virginica} {‘virginica} 1.0007 e - 246 5.8758平台以及1 1 1 5.8758平台以及{“癣”}{“癣”}1.2022 e - 61 0.99995 4.9859 e-05 1 4.9859 0.99995 e-05 {‘virginica} {‘virginica} 2.687 e - 226 1.7905 e-08 1 1 1 1.7905 e-08{“癣”}{“癣”}3.3431 e - 76 0.99971 0.00028983 1 0.00028983 0.99971 {‘virginica} {‘virginica} 4.05 e - 166 0.0028527 0.99715 1 0.99715 0.0028527 {‘setosa} {‘setosa} 1 1.1272 1.1272 2.0308 e-14 e-23 e-14 1 1 {‘virginica} {‘virginica} 1.3292 e - 228 8.3604平台以及1 1 1 8.3604平台以及{‘setosa} {‘setosa} 1 4.5023 4.5023 2.1724 e-17 e-24 e-17 1 1
PostProbs
和MisClassCost
是10
——- - - - - -3
数字矩阵,每一行对应一个新的观察和每一列对应一个类。列的顺序对应的顺序CMdl.ClassNames
。
情节朴素贝叶斯分类器的后验概率区域
加载fisheriris
数据集创建。X
作为一个数字矩阵,包含150虹膜的花瓣长度和宽度的测量。创建Y
作为一个单元阵列包含相应的特征向量的虹膜的物种。
负载fisheririsX =量(:,3:4);Y =物种;
使用预测训练朴素贝叶斯分类器X
和类标签Y
。推荐的做法是指定类名。fitcnb
假定每一个预测是有条件和正态分布。
Mdl = fitcnb (X, Y,“类名”,{“setosa”,“多色的”,“virginica”});
Mdl
是一个培训ClassificationNaiveBayes
分类器。
定义一个网格的值观察预测空间。
xMax = max (X);xMin = min (X);h = 0.01;[x1Grid, x2Grid] = meshgrid (xMin (1): h: xMax (1) xMin (2): h: xMax (2));
预测网格中的每个实例的后验概率。
[~,PosteriorRegion] =预测(Mdl [x1Grid (:), x2Grid (:)));
后验概率区域和训练数据的阴谋。
h =散射(x1Grid (:), x2Grid (:), 1, PosteriorRegion);h。MarkerEdgeAlpha = 0.3;
图数据。
持有在gh = gscatter (X (: 1), X (:, 2), Y,“k”,“dx *”);标题虹膜花瓣测量和后验概率;包含“花瓣长度(厘米)”;ylabel“花瓣宽度(cm)”;轴紧传奇(gh,“位置”,“最佳”)举行从
输入参数
Mdl
- - - - - -朴素贝叶斯分类模型
ClassificationNaiveBayes
模型对象|CompactClassificationNaiveBayes
模型对象
朴素贝叶斯分类模型,指定为一个ClassificationNaiveBayes
模型对象或CompactClassificationNaiveBayes
模型对象返回的fitcnb
或紧凑的
,分别。
X
- - - - - -预测分类数据
数字矩阵|表
预测数据分类,指定为一个数字矩阵或表。
每一行的X
对应于一个观察,每一列对应一个变量。
一个数字矩阵:
的变量的列
X
必须有相同的订单预测变量,训练吗Mdl
。如果你训练
Mdl
使用一个表(例如,资源描述
),然后X
可以是一个数字矩阵如果资源描述
只包含数字预测变量。将数值预测资源描述
分类在训练、识别分类预测使用“CategoricalPredictors”
名称-值对的观点fitcnb
。如果资源描述
包含了异构预测变量(例如,数字和分类数据类型)X
是一个数字矩阵,然后呢预测
抛出一个错误。
一个表:
预测
不支持多列变量或细金宝app胞数组以外的细胞阵列的特征向量。如果你训练
Mdl
使用一个表(例如,资源描述
),那么所有的预测变量X
必须有相同的变量名和数据类型的变量训练吗Mdl
(存储在Mdl.PredictorNames
)。然而,列的顺序X
不需要对应的列顺序资源描述
。资源描述
和X
可以包含额外的变量(响应变量,观察体重、等等),但预测
忽略了它们。如果你训练
Mdl
使用一个数字矩阵,然后预测名称Mdl.PredictorNames
必须与相应的预测变量的名字X
。指定预测的名字在训练,使用的PredictorNames
的名称-值对的论点fitcnb
。所有的预测变量X
必须是数值向量。X
可以包含额外的变量(响应变量,观察体重、等等),但预测
忽略了它们。
数据类型:表
|双
|单
注:
如果
Mdl.DistributionNames
是“锰”
,然后恢复软件南
对应于行X
包含至少一个南
。如果
Mdl.DistributionNames
不是“锰”
,那么软件忽略南
当估计误分类代价和后验概率值。具体地说,软件计算的条件密度预测给定类的离开了相对应的因素缺失的预测价值。为预测分配指定为
“mvmn”
,如果X
在训练数据中包含的水平并不代表(也就是说,没有Mdl.CategoricalLevels
的预测),然后预测给定类的条件密度为0。对于那些观察,软件返回相应的值后
作为一个南
。软件决定这种观测使用的类标签类存储在先验概率Mdl.Prior
。
输出参数
标签
——预测类标签
分类向量逻辑向量|数字向量| | |字符数组单元阵列的特征向量
预测类标签,作为分类向量,返回字符数组,逻辑或数值向量,或单元阵列的特征向量。
预测类标签有以下:
观察到的类标签(数据类型一样
Mdl.Y
)。(软件对字符串数组作为细胞阵列特征向量)。长度的行数
Mdl.X
。类预期收益率最低的误分类成本(
成本
)。
后
——类的后验概率
数字矩阵
类后验概率,返回一个数字矩阵。后
行等于的行数的Mdl.X
和列等于截然不同的类的数目在训练数据(尺寸(Mdl.ClassNames, 1)
)。
后(j, k)
是类的后验概率预测k
(在课堂上Mdl.ClassNames (k)
鉴于连续观测j
的Mdl.X
。
成本
预期的误分类代价
数字矩阵
预期误分类代价,返回一个数字矩阵。成本
行等于的行数的Mdl.X
和列等于截然不同的类的数目在训练数据(尺寸(Mdl.ClassNames, 1)
)。
成本(j, k)
是预期的误分类代价的观察行吗j
的Mdl.X
预测到类k
(在课堂上Mdl.ClassNames (k)
)。
更多关于
误分类代价
一个误分类代价分类器的相对严重程度标签是一个观察到错误的类。
存在两种类型的误分类代价:真正的和预期。让K类的数量。
真正的误分类代价——一个K——- - - - - -K矩阵,元素(我,j)表示一个观察到类分类的成本j如果它真正的类我。软件商店的误分类代价的财产
Mdl.Cost
在计算,并使用它。默认情况下,Mdl.Cost (i, j)
= 1,如果我
≠j
,Mdl.Cost (i, j)
= 0,如果我
=j
。换句话说,是成本0
正确的分类和1
对于任何不正确的分类。预期的误分类代价——一个K维向量,元素k分类的加权平均成本是一个观察到课吗k,由类的后验概率加权。
换句话说,软件将观察分为类预期最低的误分类代价。
后验概率
的后验概率的概率是一个观察属于一个特定的类,考虑到数据。
朴素贝叶斯的分类是后验概率k对于一个给定的观察(x1、……xP)是
地点:
的条件联合密度预测给他们上课吗k。
Mdl.DistributionNames
存储分布预测的名字。π(Y=k)是类的先验概率分布。
Mdl.Prior
存储先验分布。是联合密度的预测因子。类是离散的,所以
先验概率
的先验概率类的的假设相对频率观察类发生在一个人口。
扩展功能
高大的数组
计算和数组的行比装入内存。
这个函数完全支持高数组。金宝app您可以使用模型训练与这个函数在内存中或高数据。
有关更多信息,请参见高大的数组。
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
使用
saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB编码器)生成的代码预测
函数。通过使用保存训练模型saveLearnerForCoder
。定义一个入口点函数,通过使用加载保存模型loadLearnerForCoder
并调用预测
函数。然后使用codegen
入口点函数来生成代码。生成单精度C / c++代码
预测
,指定名称参数“数据类型”、“单身”
当你打电话给loadLearnerForCoder
函数。此表包含的参数
预测
。参数不包括在这个表是完全支持。金宝app论点 笔记和局限性 Mdl
使用笔记和限制的模型对象,明白了代码生成的
CompactClassificationNaiveBayes
对象。X
X
必须包含数字单精度和双精度矩阵或表变量,分类变量,或两者兼而有之。的行数,或观察
X
可以一个变量的大小,但列的数量X
必须是固定的。如果你想指定
X
作为一个表,那么您的模型必须被训练使用一个表,和你的入口点函数预测必须做到以下几点:接受数据数组。
创建一个表的数据输入参数并指定表中的变量名。
通过表
预测
。
这个表的一个示例工作流,请参阅生成代码对数据表进行分类。在代码生成中使用表格的更多信息,见代码生成表(MATLAB编码器)和表限制代码生成(MATLAB编码器)。
有关更多信息,请参见介绍代码生成。
版本历史
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。