预测基于增量学习的朴素贝叶斯分类模型对新观测值的响应
加载人类活动数据集。
负载人类活动
有关数据集的详细信息,请输入描述
在命令行。
将朴素贝叶斯分类模型拟合到整个数据集。
TTMdl=fitcnb(专长,活动)
TTMdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 24075 DistributionNames: {1×60 cell} DistributionParameters: {5×60 cell}属性,方法
TTMdl
是一个分类朴素贝叶斯
表示传统训练模型的模型对象。
将传统的训练模型转换为朴素贝叶斯分类模型进行增量学习。
IncrementalMdl=incrementalLearner(TTMdl)
IncrementalMdl=incrementalClassificationNaiveBayes IsWarm:1度量:[1×2表]类名:[1 2 3 4 5]ScoreTransform:'none'分布名称:{1×60单元格}分布参数:{5×60单元格}属性、方法
IncrementalMdl
是一个增量分类NaiveBayes
为增量学习准备的模型对象。
的递增学习器
函数通过将学到的条件预测器分布参数以及其他信息传递给增量学习器来初始化增量学习器TTMdl
从训练数据中学习。
IncrementalMdl
天气暖和(是温暖的
是1
),这意味着增量学习功能可以开始跟踪性能指标。
通过转换传统训练模型创建的增量学习者可以生成预测,而无需进一步处理。
使用这两种模型预测所有观测值的类标签。
ttlabels=predict(TTMdl,专长);illables=predict(IncrementalMdl,专长);sameLabels=sum(ttlabels~=illables)==0
萨米拉贝尔斯=逻辑1
两个模型预测的每个观测值的标签相同。
这个例子展示了如何在输入数据块上应用错误分类成本进行标签预测,同时在训练中保持均衡的错误分类成本。
加载人类活动数据集。随机洗牌数据。
负载人类活动n=努美尔(活动);rng(10);%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);
为增量学习创建朴素贝叶斯分类模型;指定类名。为预测
通过将模型与前10个观测值进行拟合。
Mdl=incrementalClassificationNaiveBayes(ClassNames=unique(Y));initobs=10;Mdl=fit(Mdl,X(1:initobs,:),Y(1:initobs));canPredict=size(Mdl.DistributionParameters,1)==numel(Mdl.ClassNames)
canPredict =逻辑1
考虑严重惩罚错误分类“运行”(第4类)的模型。创建一个成本矩阵,应用于错误分类运行100次,与错误分类任何一个类相比。行对应于真实类,并且列对应于预测类。
k =元素个数(Mdl.ClassNames);Cost = ones(k) - eye(k);成本(4:)=成本(4:)* 100;%错误分类“跑步”的处罚成本
成本=5×50 1 1 1 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 0 100 1 1 1 1 1 10
模拟一个数据流,并对每个传入的100个观察数据块执行以下操作。
呼叫预测
预测传入数据块中每个观察值的标签。
呼叫预测
同样,但是通过使用成本
论点。
呼叫适合
使模型与传入的数据块相匹配。用一个适合传入观测的新模型覆盖先前的增量模型。
numObsPerChunk=100;nchunk=ceil((n-initobs)/numObsPerChunk);labels=0(n,1);cslabels=0(n,1);cst=0(n,5);cscscst=0(n,5);%增量学习为n = 1:nchunk 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 =适合(Mdl X (idx:), Y (idx));结束标签=标签((initobs + 1):结束);Cslabels = Cslabels ((initobs + 1):end);
通过绘制直方图比较预测方法之间的预测类分布。
图;直方图(标签);持有在…上直方图(CSL标签);图例([“默认成本预测”“成本敏感预测”])
由于成本敏感预测方法对第4类错误分类的惩罚非常严重,与使用默认均衡成本的预测方法相比,更多的预测结果进入第4类。
加载人类活动数据集。随机洗牌数据。
负载人类活动n=努美尔(活动);rng(10);%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);
有关数据集的详细信息,请输入描述
在命令行。
为增量学习创建朴素贝叶斯分类模型;指定类名。为预测
通过将模型与前10个观测值进行拟合。
Mdl=递增分类NaiveBayes(“类名”,独特的(Y));initobs = 10;Mdl =适合(Mdl X (1: initobs,:), Y (1: initobs));Mdl.DistributionParameters == numel(Mdl.ClassNames)
canPredict =逻辑1
Mdl
是一个增量分类NaiveBayes
模型。其所有属性都是只读的。该模型配置为生成预测。
模拟一个数据流,并对每个传入的100个观察数据块执行以下操作。
呼叫预测
计算传入数据块中每个观测值的类后验概率。
考虑递增地测量模型预测一个对象是否正在跳舞(y是5)。你可以通过计算块曲线中的每个观察值所产生的ROC曲线的AUC来实现这一点,即5类的后验概率和其他类之间的最大后验概率之间的差值。perfcurve
.
呼叫适合
使模型与传入的数据块相匹配。用一个适合传入观测的新模型覆盖先前的增量模型。
numObsPerChunk = 100;nchunk = floor((n - initobs)/numObsPerChunk) - 1;后= 0 (nchunk元素个数(Mdl.ClassNames));auc = 0 (nchunk, 1);classauc = 5;%增量学习为n = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1 + initobs);iend = min(n,numObsPerChunk*j + initobs);idx = ibegin: iend;[~,后(idx:)] =预测(Mdl X (idx:));diffscore = Posterior(idx,classauc) - max(Posterior(idx,setdiff(mdd . classnames,classauc)),[],2);[~, ~, ~, auc (j)] = perfcurve (Y (idx)、diffscore Mdl.ClassNames (classauc));Mdl =适合(Mdl X (idx:), Y (idx));结束
Mdl
是一个增量分类NaiveBayes
模型对象对流中的所有数据进行训练。
在传入的数据块上绘制AUC。
情节(auc) ylabel (“AUC”)xlabel(“迭代”)
AUC表明,在渐进学习过程中,分类器能够很好地正确预测舞蹈受试者。
Mdl
- - - - - -增量学习的朴素贝叶斯分类模型增量分类NaiveBayes
模型对象用于增量学习的朴素贝叶斯分类模型,指定为增量分类NaiveBayes
模型对象。您可以创建Mdl
直接或通过使用金宝app递增学习器
函数。有关更多详细信息,请参阅相应的参考页。
您必须配置Mdl
预测一批观察结果的标签。
如果Mdl
是一个经过转换、传统训练的模型,您可以预测标签而无需任何修改。
否则Mdl。DistributionParameters
必须是具有Mdl.NumPredictors
>0列和至少一行,其中每行对应于中的每个类名Mdl.ClassNames
.
X
- - - - - -一批预测数据要为其预测标签的一批预测器数据,指定为n-借-Mdl.NumPredictors
浮点矩阵。
观察标签的长度Y
以及X
必须是相等的;Y(
这是观察的标签j(行或列)在j
)X
.
数据类型:仅有一个的
|双重的
将可选的参数对指定为名称1=Value1,…,名称n=ValueN
哪里名称
参数名和价值
是对应的值。名称值参数必须出现在其他参数之后,但对的顺序无关紧要。
成本= [0 2;1 0]
属性会加倍使用true类对观察值进行错误分类的惩罚Mdl.ClassNames(1)
,而不是用真类对观察值进行错误分类Mdl.ClassNames(2)
.
成本
- - - - - -错误分类观测值的成本Mdl.成本
(默认)|方阵|结构数组错误分类观测值的成本,在表中指定为值,其中c是中的类数Mdl.ClassNames
.的值被指定的值覆盖Mdl.成本
.
价值 | 描述 |
---|---|
c-借-c数值矩阵 |
|
结构阵列 | 有两个字段的结构数组:
|
例子:Cost=struct('ClassNames',Mdl.ClassNames,'ClassificationCosts',[02;10])
数据类型:仅有一个的
|双重的
|结构体
先前的
- - - - - -前类概率Mdl.优先
(默认)|数值向量先前的类概率,指定为这个数字向量中的值。先前的
与中的类数具有相同的长度Mdl.ClassNames
,元素的顺序对应于中的类顺序Mdl.ClassNames
.预测
规范化向量,使结果之和为1。
的值被指定的值覆盖Mdl.优先
.
数据类型:仅有一个的
|双重的
分数变换
- - - - - -分数转换函数Mdl.ScoreTransform
(默认)|字符串标量|特征向量分数转换函数,描述增量学习函数如何转换原始响应值(指定为字符向量、字符串标量或函数句柄)。指定的值覆盖Mdl.ScoreTransform
.
此表描述了用于分数转换的可用内置函数。
价值 | 描述 |
---|---|
“doublelogit” |
1 / (1 +e–2x) |
“invlogit” |
日志(x/ (1 –x)) |
“ismax” |
将得分最高的类的分数设置为1,并将所有其他类的分数设置为0 |
“分对数” |
1 / (1 +e- - - - - -x) |
“没有” 或“身份” |
x(无转换) |
“标志” |
–1人x< 0 0代表x= 0 1为x> 0 |
“对称” |
2x– 1 |
“symmetricismax” |
将得分最高的类的分数设置为1,并将所有其他类的分数设置为-1 |
“symmetriclogit” |
2/(1 +e- - - - - -x) - 1 |
数据类型:烧焦
|一串
标签
-预测反应预测响应(或标签),作为类别或字符数组返回;浮点、逻辑或字符串向量;或带有n排。n观察的次数在吗X
和标签(
是预测的观察反应j
)
.j
标签
具有与类名相同的数据类型Mdl.ClassNames
.(该软件将字符串数组视为字符向量的单元格数组。)
后
-类后验概率班后验概率,返回为n2浮点矩阵。后(
是观察到的后验概率吗j
,k
)
她在上课j
.k
Mdl.ClassNames
指定类的顺序。
成本
-预期的误分类成本预期误分类费用,返回为n-借-numel(Mdl.ClassNames)
浮点矩阵。
成本(
观察的预期误分类成本是否行j
,k
)
属于j
X
预测进入课堂
(k
Mdl.ClassNames(
).k
)
一个误分类代价是将观察标记为错误类别的分类器的相对严重性。
错误分类的代价有两种:真实的和预期的。让K是类的数量。
真正的误分类代价-AK-借-K矩阵,其中元素(我,j)指示将观察结果预测到类中的错误分类成本j如果它的真实类别是我.软件将误分类成本储存在物业中Mdl.成本
,并在计算中使用它。默认情况下,Mdl.Cost (i, j)
= 1,如果我
≠j
和Mdl.Cost (i, j)
= 0,如果我
=j
.换句话说,成本是0
正确分类和1
任何不正确的分类。
预期误分类成本-AK-维向量,其中元素k是将观测值分类为类的加权平均误分类成本k,由类后验概率加权。
换句话说,该软件将观察结果分类到与预期误分类成本最低相对应的类别。
的后验概率是给定数据,某个观测值属于某一特定类别的概率。
对于朴素贝叶斯,分类的后验概率k对于给定的观察(x1,...,xP)是
地点:
是给定预测值在类中的条件联合密度k.Mdl。DistributionNames
存储预测值的分布名称。
π(Y=k)为类先验概率分布。Mdl.优先
存储先验分布。
是预测器的联合密度。这些类是离散的,所以
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。