網上有很多文章介紹貝葉斯原理,這裡推薦個鏈結。
這裡再說貝葉斯分類器的設計步驟:
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分詞 對分開的詞語進行處理,去除重複詞彙,去除標點和單個虛擬詞彙如 你,我,他。選擇特徵詞,很重要,要總結出符合某一型別的關鍵特徵詞對分類器進行訓練,即傳入一些已經分好類的文章,讓分類器可以知道其中的一些特徵詞。計算出特徵詞...