• 大小: 909B
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: Matlab
  • 标签: matlab  

资源简介

贝叶斯判别算法matlab的实现,详细地介绍了贝叶斯算法

资源截图

代码片段和文件信息

function A=bayesclassify(STQ)

%给定已知样本 S 、待判样本 T 和先验概率 Q 。bayesclassify(STQ) 函数输出待判样本 T 的判别结果。
%S (n*(m+2))的矩阵,其中第一列是序号,最后一列表示所属类别。S表示已知样品矩阵
%T 是待判样本
%Q (k*1)的向量 是k个总体的先验概率
%
%例
%输入
S=[
 1 76     99     5374     1
  2 79.5 99     5359     1
 3 78     99     5372     1
  4 72.1 95.9 5242     1
  5 73.8 77.7 5370     1
  6 71.2 93     4250     2
  7 75.3 94.9 3412     2
  8 70     91.2 3390     2
  9 72.8 99     2300     2
 10 62.9 80.6 3799      2
  ];


T=[
  11 68.5 79.3 1950
  12 69.3 90.3 5158
 ];

Q=[
  0.5
  0.5
  ];

%运行A=bayesclassify(STQ)

%判别结果
%A =
%     11     68.5     79.3     1950     2
%     12     69.3     90.3     5158     1
%其中最后一列为判别结果


%%%%%%%%%%%%%%计算各总体的均值和协方差阵%%%%%%%%%%%
[lzz]=size(T);
[nmm]=size(S);
m=mm-2;
Ss=sortrows(Smm);
v=Ss(:mm);
k=max(v);
a=zeros(1k);
b=a;

mu=zeros(mk);

for i=1:k
    a(i)=min(find(v==i));
    b(i)=max(find(v==i));
end
Sigma=zeros(mmk);
for i=1:k
    Sa=Ss((a(i):b(i))(2:mm-1));
    mu(:i)=mean(Sa)‘;
    Sigma(::i)=cov(Sa);
 end


%%%%%%%%%%%%%%%%%%%% 判别过程  %%%%%%%%%%%%%%%%%%%%
for i=1:l
    p=zeros(1k);
    u=zeros(1k);
    d=zeros(1k);
    for j=1:k
        d(j)=-0.5*(T(i(2:mm-1))-mu(:j)‘)*inv(Sigma(::j))*(T(i(2:mm-1))‘-mu(:j));
        u(j)=log(Q(j))-0.5*log(det(Sigma(::j)))+d(j);
    end
    x(i)=(find(u==max(u)));
end
x=x‘;
A=[Tx];


    

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

     文件       1539  2019-04-13 12:23  bayesclassify.m

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

                 1539                    1


评论

共有 条评论