貝葉斯分類器是一種簡單的模式分類器,它是以特徵值的統計概率為基礎的,簡單的講,例如已知兩個類w1和w2,乙個未知樣本x,這裡說的未知,就是不知道它屬於w1類還是屬於w2類,然後根據統計方法分別計算得到x屬於w1類的概率,即p(w1|x)和屬於w2類的概率,即p(w2|x),如果p(w1|x)> p(w2|x),則x屬於w1,反之則屬於w2。
其matlab**如下:
clear;
%clc;
n=100;
m1=0;
m2=0;
num1=0;%用於計數
num2=0;%用於計數
num3=0;%用於計數
num4=0;%用於計數
mu1=[1 3];
sigma1=[1.5 0;0 1];
r1=mvnrnd(mu1,sigma1,n);%生成模式類1
mu2=[3 1];
sigma2=[1 0.5;0.5 2];
r2=mvnrnd(mu2,sigma2,n);%生成模式類2
subplot(1,2,1);
plot(r1(:,1),r1(:,2),'ro',r2(:,1),r2(:,2),'b*');
title('圖1:兩個模式類各生成個100正態分佈的隨機數二維散點圖');
p1=normpdf(r1(:,1),mu1(:,1),sqrt(1.5));
p2=normpdf(r1(:,1),mu2(:,1),1);
p3=normpdf(r2(:,1),mu1(:,1),sqrt(1.5));
p4=normpdf(r2(:,1),mu2(:,1),1);
for i=1:1:100
if (p1(i)*0.5)>=(p2(i)*0.5)%進行模式判別
num1=num1+1;
m1=m1+1;
a1(m1,:)=r1(i,:);%分到模式類1
else
num2=num2+1;
m2=m2+1
a2(m2,:)=r1(i,:);%分到模式類2
endif (p3(i)*0.5)<=(p2(i)*0.5)
num3=num3+1;
m1=m1+1;
a1(m1,:)=r2(i,:);%分到模式類1
else
num4=num4+1;
m2=m2+1;
a2(m2,:)=r2(i,:);%分到模式類2
endendsubplot(1,2,2);
plot(a1(:,1),a1(:,2),'ro',a2(:,1),a2(:,2),'b*');
title('圖2:以第一特徵分量對200個樣本分類');
執行結果如下圖所示:
從執行結果可看出,模式類1的一些樣本點被錯誤分到模式類2,模式類2的一些樣本點被錯誤分到模式類1,也就是說,貝葉斯分類器的分類正確率不高。
下圖為更全面的實驗結果截圖
matlab 實現貝葉斯分類器
網上有很多文章介紹貝葉斯原理,這裡推薦個鏈結。這裡再說貝葉斯分類器的設計步驟 1.對每個簇的資料求均值mu 和協方差矩陣sigma 2.對測試資料,將其對每個簇用均值和協方差矩陣求相關性。3.將資料分類到相關性大的簇中。分類器函式 bayesclassifer.m function labels b...
貝葉斯分類器(含MATLAB實現)
由於被測試的模式特徵向量通常存在隨機性,所獲得的模式樣本有一定的統計分布。因此,採用統計決策的理論方法進行模式分類是常用的模式識別方法。這也是遙感影象土地分類的常用方法。統計決策函式以貝葉斯定理為基礎,一般需要滿足兩個基本條件 1 已知模式向量的有關概率分布先驗知識,如先驗概率 類條件概率密度。2 ...
Python實現貝葉斯分類器
使用樸素貝葉斯分類器,對一片文章進行分類處理 對中文進行分詞處理 jieba分詞 對分開的詞語進行處理,去除重複詞彙,去除標點和單個虛擬詞彙如 你,我,他。選擇特徵詞,很重要,要總結出符合某一型別的關鍵特徵詞對分類器進行訓練,即傳入一些已經分好類的文章,讓分類器可以知道其中的一些特徵詞。計算出特徵詞...