关键词不能为空

当前您在: 主页 > 英语 >

基于朴素贝叶斯模型的两类问题分类

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-10 05:38
tags:

-

2021年2月10日发(作者:olivetti)




基于朴素贝叶斯模型的两类问题分类



一、实验目的






通过实验,加深对统计判决与概率 密度估计基本思想、方法的认识,了解影响


Bayes



类器性能的因素,掌握基于


Bayes


决策理 论的随机模式分类的原理和方法,并理解


ROC



线的意义



二、实验内容






通过< /p>


Bayes


决策理论的分类器,从给定样本集选择训练集以及测试 集进行训练并分类,



matlab


实 现,绘制


ROC


曲线,得到最优的分类阈值


三、实验原理






Bayes


分类器的基本思想是依据类的概率、概密,按照某种准则使分类结果从统计上讲


是最佳 的。


换言之,


根据类的概率、


概密将模 式空间划分成若干个子空间,


在此基础上形成


模式分类的判决规 则。准则函数不同,所导出的判决规则就不同,


分类结果也不同。使用哪


种准则或方法应根据具体问题来确定





朴素贝叶斯的一个基本假设是所有特征在类别已知的条件下是 相互独立的,即





p(x



w_i )=p(x_1,x_2,...,x_d



w_i )=



_(j=1)^d?


< br>p(x_j



w_i )






在构建分类器时,


只需要逐个估计出每个类别的训练样本在每一维上 的分布形式,


就可


以得到每个类别的条件概率密度,

< p>
大大减少了需要估计的参数的数量。


朴素贝叶斯分类器可

< br>以根据具体问题确定样本在每一维特征上的分布形式,


最常用的一种假设是每一个 类别的样


本都服从各维特征之间相互独立的高斯分布,即





p(x



w_i )=



_(j=1)^d?



p( x_j



w_i )=



_(j=1)^d?{1/(



2

< br>π



σ


_ij ) exp[-(x_j-


μ


_ij )^2/(2


σ


_ij )] }






式中



u_ij--

< br>第


i


类样本在第


j


维特征上的均值










σ


_ij--


相应的方差





可以得到对数判别函数:


























g



_i


( x)=ln?



p(x



w_i


)



+ln?P(w_i


)













=



_(j=1)^d?[-1/2



ln?2


π


-ln?



σ


_ij



-(x_j-


μ


_ij


)^2/(2


σ


_ij


)]


+ln?P(w_i


)=-d/2



ln?2

< p>
π


-



_(j=1)^d ?ln?



σ


_ij-



_(j=1)^d?



(x _j-


μ


_ij )^2/(2


σ


_ij )+







ln?P(w_i )




其中的第


1


项与类别无关,可以忽略,由此得到判别函数:


























g



_i


(x)=ln?P(w_i


)-


∑< /p>


_(j=1)^d?ln?



σ


_ij-



_(j=1)^d?(x_j-


μ


_ij )^2/(2


σ


_ij )








四、实验步骤





1


、用给定的两类样本集,各选取前


400


个作为训练样本,通过调用


MA TLAB


工具箱的


NaiveBayes


类的


fit


函数训练分类器




2


、通过


1


得到的训练器,选取样本集后


100


个 样本作为测试样本,得到分类结果。




3


、对测试集的分类结果进行统计,计算正确率。





4


、绘制 相应的


ROC


曲线



五、实验代码



function [Train,TrainLabel] = getTrain(c1,c2)


%UNTITLED


得到训练样本



%




根据给定两类样本集



各选取前


400


行样本作为训练样本



c1 = c1(1:400,:);


c2 = c2(1:400,:);


c =[c1;c2];


Train=c(:,2:25);


TrainLabel=c(:,1);


end



function [FirstTest,FirstTestLabel] = getFirstTest( c1 )


%UNTITLED2


得到第一类测试集



%


选取第一类样本集的后


100


行作为测试集



c1 = c1(401:500,:);


FirstTest=c1(:,2:25);


FirstTestLabel=c1(:,1);


end



function [ SecondTest,SecondTestLabel] = getSecondTest( c2 )


%UNTITLED3


得到第二类测试集



%




选取第二类最后

< br>100


行作为第二类测试集



c2 = c2(401:500,:);


SecondTest=c2(:,2:25);


SecondTestLabel=c2(:,1);


end



function [ right] = getRight(l,realLabel)


%UNTITLED4


得到正确率



%




根据预测结果以及真实类别标号



统计预测正确个数



得到正确率



count=0;


for i=1:100






if(l(i)==realLabel)










count=count+1;






end


end






right=count/100;


end



function [Fright,Sright,pl,rl] = predict(c1,c2)


%UNTITLED5


得到两类预测正确率



[Train,TrainLabel]=getTrain(c1,c2);



%


得到训练样本以及类别标号



N=(Train,TrainLabel);



%


利用函数进行分类器训练



[ft,fl]= getFirstTest(c1);












%


得到第一类测试样本以及真实类别 标号



fpl=predict(N,ft);





















%


得到第一类测试样本预测类别标号



Fright = getRight(fpl,fl);













%


得到第一类测试样本分类正确率



[st,sl]= getSecondTest(c2);












%


得到第二类测试样本以及真实类别 标号



spl=predict(N,st);





















%


得到第二类测试样本预测类别标号



Sright = getRight(spl,sl);













%


得到第二类测试样本分类正确率


-


-


-


-


-


-


-


-



本文更新与2021-02-10 05:38,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/626794.html

基于朴素贝叶斯模型的两类问题分类的相关文章