贝叶斯分类器的matlab实现及案例


以狼来了为例,使用贝叶斯分类器对小孩三次说谎后的可信度的一个计算,并介绍了二分类问题的matlab实现
资源截图
代码片段和文件信息
 function [ PpSs] = CASE(constant)
%CASE3函数表示在协方差矩阵是非对角阵鲈鱼和三文鱼的协方差矩阵相同条件下,生成的贝叶斯分类器的结果
%输入参数:mul_perch——鲈鱼的均值
%         sigma_perch——鲈鱼的方差
%         mul_salmon——三文鱼的均值
%         sigma_salmon——三文鱼的方差
%输出参数:Pp作为一个结构体,表示当perch_test作为测试样本的分类的准确率和错误率
% pc——表示perch_test作为测试样本的分类的准确率
% pw——表示perch_test作为测试样本的分类的错误率
%         Ss作为一个结构体,表示当salmon_test作为测试样本的分类的准确率和错误率
% pc——表示perch_test作为测试样本的分类的准确率
% pw——表示perch_test作为测试样本的分类的错误率
%case3:协方差矩阵是非对角阵鲈鱼和三文鱼的协方差矩阵相同
%case4:鲈鱼和三文鱼的协方差矩阵都是对角阵,但是两者协方差矩阵不同
%case5:鲈鱼和三文鱼的协方差矩阵都是非对角阵,但是两者协方差矩阵不同(更一般的情况)
switch(constant)
    case 3
    mul_salmon=[150120];sigma_salmon=[30-15;-1550];
    mul_perch=[17090];sigma_perch=[30-15;-1550];
    case 4
    mul_perch=[17090];sigma_perch=[350;035];   
    mul_salmon=[150120];sigma_salmon=[280;028];
    case 5
    mul_perch=[17090];sigma_perch=[38-9;-940];
    mul_salmon=[150120];sigma_salmon=[40-13;-1330];
end
perch=mvnrnd(mul_perchsigma_perch10000);%z = mvnrnd(musigman):产生多维正态随机数,mu为期望向量,sigma为协方差矩阵,n为规模。
salmon=mvnrnd(mul_salmonsigma_salmon10000);
[ perch_trainperch_testsalmon_trainsalmon_test ] = rand_select( perchsalmon );%生成测试样本和训练样本
%绘制perch和salmon的散点图    
figure(1);
scatter(perch(:1)perch(:2)‘r‘‘.‘);
xlabel(‘样本长度‘);
ylabel(‘样本亮度‘);
hold on
scatter(salmon(:1)salmon(:2)‘b‘‘.‘);
legend(‘perch 鲈鱼‘‘salmon 三文鱼‘);
title(‘perch和salmon的散点图‘);
mul_perch_train=mean(perch_train);
sigma_perch_train=cov(perch_train);
%salmon的训练样本
mul_salmon_train=mean(salmon_train);
sigma_salmon_train=cov(salmon_train);                           
%获得后验概率(去掉所谓的常量)
%将测试样本分给鲈鱼的类别
A_perch=ones(size(perch_train1)2);
B_perch=[mul_perch_train(:1)*A_perch(:1)mul_perch_train(:2)*A_perch(:2)];
%利用鲈鱼的测试样本
p_p=-0.5*(perch_test-B_perch)*inv(sigma_perch_train)*(perch_test-B_perch)‘;
y_perch=diag(p_p);%提取对角元素将鲈鱼分类到鲈鱼的后验概率
%利用三文鱼的测试样本
s_p=-0.5*(salmon_test-B_perch)*inv(sigma_perch_train)*(salmon_test-B_perch)‘;
y_sal_vsperch=diag(s_p);%将三文鱼分类到鲈鱼类别的后验概率
%将测试样本分给三文鱼的类别
A_salmon=ones(size(salmon_train1)2);
B_salmon=[mul_salmon_train(:1)*A_salmon(:1)mul_salmon_train(:2)*A_salmon(:2)];
%利用鲈鱼的测试样本
p_s=-0.5*(perch_test-B_salmon)*inv(sigma_salmon_train)*(perch_test-B_salmon)‘;
y_per_vssalmon=diag(p_s);%提取对角元素将鲈鱼分类到三文鱼的后验概率
%利用三文鱼的测试样本
s_s=-0.5*(salmon_test-B_salmon)*inv(sigma_salmon_train)*(salmon_test-B_salmon)‘;
y_salmon=diag(s_s);%将三文鱼分类到鲈鱼类别的后验概率
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%计算分类结果的准确率和错误率
%鲈鱼作为测试样本,分类结果如下
A_p=y_perch-y_per_vssalmon;
Pp.pc=(sum(A_p(:)>0))/size(A_p1);
Pp.pw=(sum(A_p(:)<=0))/size(A_p1);
%三文鱼作为测试样本,分类结果如下
A_s=y_salmon-y_sal_vsperch;
Ss.sc=(sum(A_s(:)>0))/size(A_s1);
Ss.sw=(sum(A_s(:)<=0))/size(A_s1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%绘制相关图例  
figure(2)
subplot(211);
plot3(perch_test(:1)perch_test(:2)y_perch‘b.‘);
hold on
plot3(perch_test(:1)perch_test(:2)y_per_vssalmon‘r*‘); 
legend(‘p(鲈鱼|鲈鱼测试样本)‘‘p(三文鱼|鲈鱼测试样本)‘);
xlabel(‘鲈鱼长度测试样本‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3994  2017-05-09 20:06  贝叶斯分类器的matlab实现贝叶斯分类器CASE.m

     文件       6661  2017-05-09 16:50  贝叶斯分类器的matlab实现贝叶斯分类器classify.m

     文件       2587  2017-05-09 17:01  贝叶斯分类器的matlab实现贝叶斯分类器classify_2D.m

     文件       2138  2017-05-09 16:57  贝叶斯分类器的matlab实现贝叶斯分类器K_cp.m

     文件       1695  2017-03-11 21:05  贝叶斯分类器的matlab实现贝叶斯分类器para_esti.m

     文件       1063  2017-03-11 20:59  贝叶斯分类器的matlab实现贝叶斯分类器problem01.m

     文件        903  2017-05-09 19:50  贝叶斯分类器的matlab实现贝叶斯分类器
and_select.m

     文件        747  2017-03-11 16:51  贝叶斯分类器的matlab实现贝叶斯分类器说明.txt

     文件    3220992  2018-01-11 19:57  贝叶斯分类器的matlab实现贝叶斯论实例.ppt

     目录          0  2017-05-15 14:52  贝叶斯分类器的matlab实现贝叶斯分类器

     目录          0  2018-01-11 19:57  贝叶斯分类器的matlab实现

----------- ---------  ---------- -----  ----

              3240780                    11


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)