贝叶斯分类器MATLAB经典程序.doc_第1页
贝叶斯分类器MATLAB经典程序.doc_第2页
贝叶斯分类器MATLAB经典程序.doc_第3页
贝叶斯分类器MATLAB经典程序.doc_第4页
贝叶斯分类器MATLAB经典程序.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

function Bayes2%为了提高实验样本测试的精度,故采用多次模拟求平均值的方法N=input(实验模拟次数 N(N最好为奇数) );Result(1:3,1:3)=0; %判别矩阵的初始化for k=1:N %控制程序模拟次数N %生成二维正态分布的样本2 X N 维的矩阵 X1=mvnrnd(1 2,4 0;0 6,300); %2 X N X2=mvnrnd(5 3,5 0;0 1,200); X3=mvnrnd(4 7,2 0;0 9,500); %样本程序 %-% %测试样本 X10=mvnrnd(1 2,4 0;0 6,100); %2 X N X20=mvnrnd(5 3,5 0;0 1,100); X30=mvnrnd(4 7,2 0;0 9,100); %先验概率 P(1)=length(X1)/(length(X1)+length(X2)+length(X3); P(2)=length(X2)/(length(X1)+length(X2)+length(X3); P(3)=length(X3)/(length(X1)+length(X2)+length(X3); %计算相关量 cov(X):协方差矩阵 Ave:均值 %-% W1=-1/2*inv(cov(X1); W2=-1/2*inv(cov(X2); W3=-1/2*inv(cov(X3);% Ave1=(sum(X1)/length(X1);Ave2=(sum(X2)/length(X2); Ave3=(sum(X3)/length(X3);%计算平均值(2维列向量) w1=inv(cov(X1)*Ave1;w2=inv(cov(X2)*Ave2;w3=inv(cov(X3)*Ave3;%2 w10=-1/2*Ave1*inv(cov(X1)*Ave1-1/2*log(det(cov(X1)+log(P(1); w20=-1/2*Ave2*inv(cov(X2)*Ave2-1/2*log(det(cov(X2)+log(P(2); w30=-1/2*Ave3*inv(cov(X3)*Ave3-1/2*log(det(cov(X3)+log(P(3); %-% for i=1:3 for j=1:100 if i=1 g1=X10(:,j)*W1*X10(:,j)+w1*X10(:,j)+w10; g2=X10(:,j)*W2*X10(:,j)+w2*X10(:,j)+w20; g3=X10(:,j)*W3*X10(:,j)+w3*X10(:,j)+w30; if g1=g2&g1=g3 Result(1,1)=Result(1,1)+1; elseif g2=g1&g2=g3 Result(1,2)=Result(1,2)+1;%记录误判情况 else Result(1,3)=Result(1,3)+1;%记录误判情况 end elseif i=2 g1=X20(:,j)*W1*X20(:,j)+w1*X20(:,j)+w10; g2=X20(:,j)*W2*X20(:,j)+w2*X20(:,j)+w20; g3=X20(:,j)*W3*X20(:,j)+w3*X20(:,j)+w30; if g2=g1&g2=g3 Result(2,2)=Result(2,2)+1; elseif g1=g2&g1=g3 Result(2,1)=Result(2,1)+1; else Result(2,3)=Result(2,3)+1; end else g1=X30(:,j)*W1*X30(:,j)+w1*X30(:,j)+w10; g2=X30(:,j)*W2*X30(:,j)+w2*X30(:,j)+w20; g3=X30(:,j)*W3*X30(:,j)+w3*X30(:,j)+w30; if g3=g1&g3=g2 Result(3,3)=Result(3,3)+1; elseif g2=g1&g2=g3 Result(3,2)=Result(3,2)+1; else Result(3,1)=Result(3,1)+1; end end end endend%画出各样本的分布情况subplot(2,1,1)plot(X1(1,:),X1(2,:),r.,LineWidth,2),hold onplot(X2(1,:),X2(2,:),go,LineWidth,2),hold onplot(X3(1,:),X3(2,:),b+,LineWidth,2),hold ontitle(训练样本分布情况)legend(训练样本1,训练样本2,训练样本3)subplot(2,1,2)plot(X10(1,:),X10(2,:),r.,LineWidth,2),hold onplot(X20(1,:),X20(2,:),go,LineWidth,2),hold onplot(X30(1,:),X30(2,:),b+,LineWidth,2),hold ontitle(测试样本分布情况)legend(测试样本1,测试样本2,测试样本3)%由于多次循环后存在小数,根据实际情况判别矩阵须取整%如果N为偶数,可能出现小数为0.5的情况,此时将无法更加准确判断矩阵Result=Result/N %判别矩阵,反映Bayes的判别效果for i=1:length(Result) if round(sum(Result(i,:)-fix(Result(i,:)=1 m,n=find(max(Result(i,:)-fix(Result(i,:)=(Result(i,:)-fix(Result(i,:); n=min(n);%存在小数点相同的情况随即选取一个 for j=1:length(Result) if j=n Result(i,j)=fix(Result(i,j)+1; else Result(i,j)=fix(Result(i,j); end end elseif round(sum(Result(i,:)-fix(Result(i,:)=2 m,n1=find(max(Result(i,:)-fix(Result(i,:)=(Result(i,:)-fix(Result(i,:); m,n2=find(min(Result(i,:)-fix(Result(i,:)=(Result(i,:)-fix(Result(i,:); n1=min(n1);n2=min(n2);%如果有存在小数点相同的情况,随即选取一个 for j=1:length(Result)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论