预测
预测朴素贝叶斯增量学习分类模型对新观测结果的响应
描述
例子
预测类别标签
加载人类活动数据集。
负载humanactivity
关于数据集的详细信息,请输入描述
在命令行。
对整个数据集拟合朴素贝叶斯分类模型。
TTMdl = fitcnb(feat,actid)
TTMdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 24075 DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell}属性,方法
TTMdl
是一个ClassificationNaiveBayes
表示传统训练模型的模型对象。
将传统训练模型转换为朴素贝叶斯分类模型进行增量学习。
IncrementalMdl =增量学习者(TTMdl)
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [1x2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell}属性,方法
IncrementalMdl
是一个incrementalClassificationNaiveBayes
为增量学习准备的模型对象。
的incrementalLearner
函数通过向增量学习器传递学习到的条件预测器分布参数以及其他信息来初始化增量学习器TTMdl
从训练数据中学习。IncrementalMdl
是温暖的(IsWarm
是1
),这意味着增量学习功能可以开始跟踪性能指标。
通过转换传统训练模型创建的增量学习器可以生成预测,而无需进一步处理。
使用这两种模型预测所有观测值的类别标签。
ttlabels = predict(TTMdl,feat);illables = predict(IncrementalMdl,壮举);sameLabels = sum(ttlabels ~= illables) == 0
sameLabels =逻辑1
这两个模型对每个观测结果都预测了相同的标签。
使用块特定错误分类代价预测标签
这个例子展示了如何将错误分类代价应用于传入数据块的标签预测,同时为训练保持平衡的错误分类代价。
加载人类活动数据集。随机打乱数据。
负载humanactivityN = numel(actid);rng (10);%用于再现性Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);
创建一个用于增量学习的朴素贝叶斯分类模型。指定类名。准备模型预测
通过将模型与前10个观测值拟合。
Mdl = incrementalClassificationNaiveBayes(ClassNames=唯一的(Y));Initobs = 10;Mdl = fit(Mdl,X(1:initobs,:),Y(1:initobs));canPredict = size(mll . distributionparameters,1) == numel(mll . classnames)
canPredict =逻辑1
考虑对错误分类“跑步”(第4类)的模型进行严厉的惩罚。创建一个成本矩阵,与错误分类任何其他类别相比,对错误分类跑步适用100倍的惩罚。行对应真实的类,列对应预测的类。
k = number (mll . classnames);成本= ones(k) - eye(k);成本(4,:)=成本(4,:)*100;%错误分类“跑”的罚则成本
成本=5×50 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 0 100 1 1 1 1 100
模拟一个数据流,并对每个传入的100个观测数据块执行以下操作。
调用
预测
预测输入数据块中每个观测值的标签。调用
预测
类型指定错误分类代价成本
论点。调用
适合
使模型适合传入的数据块。将先前的增量模型覆盖为一个适合于新观测值的新模型。
numObsPerChunk = 100;nchunk = ceil((n - initobs)/numObsPerChunk);标签= 0 (n,1);Cslabels = 0 (n,1);CST = 0 (n,5);CSCST = 0 (n,5);%增量学习为j = 1: ibegin = min(n,numObsPerChunk*(j-1) + 1 + initobs);iend = min(n,numObsPerChunk*j + initobs);Idx = ibegin:iend;[标签(idx), ~,春秋国旅(idx:)] =预测(Mdl X (idx:));[cslabels idx), ~, cscst (idx:)] =预测(Mdl X (idx:),成本=成本);Mdl = fit(Mdl,X(idx,:),Y(idx));结束Labels = Labels ((initobs + 1):end);Cslabels = Cslabels ((initobs + 1):end);
通过绘制直方图比较预测方法之间的预测类别分布。
图;直方图(标签);持有在直方图(cslabels);传奇([“违约成本预测”厂商“预测”])
因为成本敏感的预测方法会严重地惩罚错误分类的第4类,所以与使用默认平衡成本的预测方法相比,会有更多的预测进入第4类。
计算后验类别概率
加载人类活动数据集。随机打乱数据。
负载humanactivityN = numel(actid);rng (10)%用于再现性Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);
关于数据集的详细信息,请输入描述
在命令行。
创建一个用于增量学习的朴素贝叶斯分类模型。指定类名。准备模型预测
通过将模型与前10个观测值拟合。
Mdl = incrementalClassificationNaiveBayes(“类名”,独特的(Y));Initobs = 10;Mdl = fit(Mdl,X(1:initobs,:),Y(1:initobs));canPredict = size(mll . distributionparameters,1) == numel(mll . classnames)
canPredict =逻辑1
Mdl
是一个incrementalClassificationNaiveBayes
模型。它的所有属性都是只读的。该模型被配置为生成预测。
模拟一个数据流,并对每个传入的100个观测数据块执行以下操作。
调用
预测
计算传入数据块中每个观测的类后验概率。调用
rocmetrics
使用类后验概率计算ROC曲线下的面积(AUC),并存储所有类的平均AUC值。AUC是模型预测活动平均程度的增量度量。调用
适合
使模型适合传入的数据块。将先前的增量模型覆盖为一个适合于新观测值的新模型。
numObsPerChunk = 100;nchunk = floor((n - initobs)/numObsPerChunk);Auc = 0 (nchunk,1);Classauc = 5;%增量学习为j = 1: ibegin = min(n,numObsPerChunk*(j-1) + 1 + initobs);iend = min(n,numObsPerChunk*j + initobs);Idx = ibegin:iend;[~,posterior] = predict(Mdl,X(idx,:));mdlROC = rocmetrics(Y(idx),后验,Mdl.ClassNames);[~,~,~,auc(j)] = average(mdlROC,“微”);Mdl = fit(Mdl,X(idx,:),Y(idx));结束
现在,Mdl
是一个incrementalClassificationNaiveBayes
在流中的所有数据上训练的模型对象。
绘制每个传入数据块的AUC值。
Plot (auc) xlim([0 nchunk]) ylabel(“AUC”)包含(“迭代”)
图中显示,在增量学习过程中,分类器可以很好地预测活动。
输入参数
Mdl
- - - - - -增量学习的朴素贝叶斯分类模型
incrementalClassificationNaiveBayes
模型对象
用于增量学习的朴素贝叶斯分类模型,指定为incrementalClassificationNaiveBayes
模型对象。你可以创建Mdl
直接或通过转换支持的,传统训练的机器学习模型使用金宝appincrementalLearner
函数。更多详细信息,请参见相应的参考页面。
您必须配置Mdl
为一批观察结果预测标签。
如果
Mdl
是一个转换的,传统训练的模型,你可以预测标签没有任何修改。否则,
Mdl。DistributionParameters
一定是单元格矩阵用的吗Mdl。NumPredictors
> 0列和至少一行,其中每行对应于中的每个类名Mdl。ClassNames
.
X
- - - - - -一批预测器数据
浮点矩阵
要为其预测标签的一批预测器数据,指定为n——- - - - - -Mdl。NumPredictors
浮点矩阵。
数据类型:单
|双
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
例子:成本=[0 2;10 0]
属性将错误分类观察值与真实类的惩罚增加一倍Mdl.ClassNames (1)
而不是将观察结果与真实等级错误地分类Mdl.ClassNames (2)
.
成本
- - - - - -错误分类观测结果的代价
Mdl。成本
(默认)|方阵|结构数组
错误分类观测值的代价,指定为表中的值,其中c上课的数量是多少Mdl。ClassNames
.的值将覆盖Mdl。成本
.
价值 | 描述 |
---|---|
c——- - - - - -c数字矩阵 |
|
结构数组 | 有两个字段的结构数组:
|
例子:=结构(“类名”,Mdl成本。一会,'ClassificationCosts',[0 2; 1 0])
数据类型:单
|双
|结构体
之前
- - - - - -先验类概率
Mdl。Prior
(默认)|数值向量
先验类概率,指定为数值向量中的值。之前
长度与类的数量相同Mdl。ClassNames
,元素的顺序对应于中的类顺序Mdl。ClassNames
.预测
将向量归一化,使结果的和为1。
的值将覆盖Mdl。Prior
.
数据类型:单
|双
ScoreTransform
- - - - - -分数变换函数
Mdl。ScoreTransform
(默认)|字符串标量|特征向量
分数转换函数,描述增量学习函数如何转换指定为字符向量、字符串标量或函数句柄的原始响应值。的值将覆盖Mdl。ScoreTransform
.
该表描述了可用于分数转换的内置函数。
价值 | 描述 |
---|---|
“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 |
数据类型:字符
|字符串
输出参数
标签
-预测反应(标签)
分类数组|浮点向量|字符数组|逻辑向量|字符串向量|单元格字符向量数组
预测的响应(标签),作为类别或字符数组返回;浮点、逻辑或字符串向量;或者单元格数组的字符向量n行。n观察的数量在吗X
,标签(
预测的反应是观察吗j
)
.j
标签
存储的类名具有相同的数据类型Mdl。ClassNames
.(该软件将字符串数组视为字符向量的单元格数组。)
后
-类后验概率
浮点矩阵
类后验概率,作为n——- - - - - -元素个数(Mdl.ClassNames)
浮点矩阵。后(
后验概率是观察到的吗j
,k
)
在课堂上j
.k
Mdl。ClassNames
指定类的顺序。
成本
-预期的分类错误成本
浮点矩阵
预期误分类代价,作为n——- - - - - -元素个数(Mdl.ClassNames)
浮点矩阵。
成本(
观察的预期成本是连续的吗j
,k
)
的j
X
被分类
(k
Mdl。ClassNames(
).k
)
更多关于
误分类代价
一个误分类代价是分类器将观察结果标记到错误类的相对严重程度。
存在两种类型的错误分类成本:真实的和预期的。让K是类的数量。
真实误分类成本——一个K——- - - - - -K矩阵,其中元素(我,j)表示将观测值分类的代价j如果它真正的阶级是我.软件将错误分类代价存储在属性中
Mdl。成本
,并将其用于计算。默认情况下,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
存储先前的分布。是预测因子的联合密度。类是离散的,所以
版本历史
R2021a中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。