matlab 實現貝葉斯分類器

2021-08-14 11:40:03 字數 2465 閱讀 5655

網上有很多文章介紹貝葉斯原理,這裡推薦個鏈結。

這裡再說貝葉斯分類器的設計步驟:

1.對每個簇的資料求均值mu 和協方差矩陣sigma

2.對測試資料,將其對每個簇用均值和協方差矩陣求相關性。

3.將資料分類到相關性大的簇中。

分類器函式 bayesclassifer.m

function

[ labels ] = bayesclassifer

(traindata,trainlabel,k,testdata)

%traindata 訓練資料

%trainlabel 訓練資料的標籤

%k 訓練資料的類數

%testdata 測試資料

[~,dimentr]=size(traindata);

[numsts,dimente]=size(testdata);

if dimentr~=dimente

disp('錯誤!測試資料和訓練資料維數不一樣!');

return;

endmu=zeros(k,dimentr);%各個類的均值

sigma=zeros(dimentr*k,dimentr);%各個類的協方差

%計算各個類的均值和協方差

fori=1:k

mu(i,:)=mean(traindata(trainlabel==i,:));

sigma(((i-1)*dimentr+1):i*dimentr,:)=cov(traindata(trainlabel==i,:));

end%對測試資料對各個類進行比對

labels=zeros(numsts,1);

fori=1:numsts

p=zeros(1,k);

forj=1:k

%求相關性函式

p(j)=mvnpdf(testdata(i,:),mu(j,:),sigma((j-1)*dimentr+1:j*dimentr,:));

end[~,maxindex]=max(p);

labels(i)=maxindex;

end%視覺化

color = ;

if dimentr==2

subplot(1,2,1);

fori=1:k

plot(traindata(trainlabel==i,1),traindata(trainlabel==i,2),char(color(i)));

hold on;

endtitle('訓練資料');

subplot(1,2,2);

fori=1:k

plot(testdata(labels==i,1),testdata(labels==i,2),char(color(i)));

hold on;

endtitle('測試資料');

elseif dimentr==3

subplot(1,2,1);

fori=1:k

plot(traindata(trainlabel==i,1),traindata(trainlabel==i,2),traindata(trainlabel==i,3),char(color(i)));

hold on;

endtitle('訓練資料');

subplot(1,2,2);

fori=1:k

plot(testdata(labels==i,1),testdata(labels==i,2),traindata(trainlabel==i,3),char(color(i)));

hold on;

endtitle('測試資料');

else

disp('維度不符合畫圖標準(1維的懶得畫),咱就不畫啦');

endend

測試資料生成和分類。

clear;

clc;

n=100;

%生成訓練資料

mu1=[2 10];

mu2=[10 2];

sigma1=[1.5 0;0 1];

sigma2=[1 0.5;0.5 2];

r1=mvnrnd(mu1,sigma1,n);

r2=mvnrnd(mu2,sigma2,n);

traindata=[r1;r2];

trainlabel=[ones(100,1);2*ones(100,1)];

%生成測試資料

mu1=[5 5];

n=200;

sigma1=[0.5 0;0 0.5];

testdata=mvnrnd(mu1,sigma1,n);

%測試labels=bayesclassifer(traindata,trainlabel,2,testdata);

貝葉斯分類器(含MATLAB實現)

由於被測試的模式特徵向量通常存在隨機性,所獲得的模式樣本有一定的統計分布。因此,採用統計決策的理論方法進行模式分類是常用的模式識別方法。這也是遙感影象土地分類的常用方法。統計決策函式以貝葉斯定理為基礎,一般需要滿足兩個基本條件 1 已知模式向量的有關概率分布先驗知識,如先驗概率 類條件概率密度。2 ...

貝葉斯分類器的MATLAB實現

貝葉斯分類器是一種簡單的模式分類器,它是以特徵值的統計概率為基礎的,簡單的講,例如已知兩個類w1和w2,乙個未知樣本x,這裡說的未知,就是不知道它屬於w1類還是屬於w2類,然後根據統計方法分別計算得到x屬於w1類的概率,即p w1 x 和屬於w2類的概率,即p w2 x 如果p w1 x p w2 ...

Python實現貝葉斯分類器

使用樸素貝葉斯分類器,對一片文章進行分類處理 對中文進行分詞處理 jieba分詞 對分開的詞語進行處理,去除重複詞彙,去除標點和單個虛擬詞彙如 你,我,他。選擇特徵詞,很重要,要總結出符合某一型別的關鍵特徵詞對分類器進行訓練,即傳入一些已經分好類的文章,讓分類器可以知道其中的一些特徵詞。計算出特徵詞...