資源簡(jiǎn)介
貝葉斯判別算法matlab的實(shí)現(xiàn),詳細(xì)地介紹了貝葉斯算法

代碼片段和文件信息
function?A=bayesclassify(STQ)
%給定已知樣本?S?、待判樣本?T?和先驗(yàn)概率?Q?。bayesclassify(STQ)?函數(shù)輸出待判樣本?T?的判別結(jié)果。
%S?(n*(m+2))的矩陣,其中第一列是序號(hào),最后一列表示所屬類別。S表示已知樣品矩陣
%T?是待判樣本
%Q?(k*1)的向量?是k個(gè)總體的先驗(yàn)概率
%
%例
%輸入
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
??];
%運(yùn)行A=bayesclassify(STQ)
%判別結(jié)果
%A?=
%?????11?????68.5?????79.3?????1950?????2
%?????12?????69.3?????90.3?????5158?????1
%其中最后一列為判別結(jié)果
%%%%%%%%%%%%%%計(jì)算各總體的均值和協(xié)方差陣%%%%%%%%%%%
[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
%%%%%%%%%%%%%%%%%%%%?判別過(guò)程??%%%%%%%%%%%%%%%%%%%%
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];
????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????1539??2019-04-13?12:23??bayesclassify.m
-----------?---------??----------?-----??----
?????????????????1539????????????????????1
評(píng)論
共有 條評(píng)論