2011-11-26 60 views
4

我有一個二進制分類問題,我需要在MATLAB中完成。有兩個類,訓練數據和測試數據問題來自兩個類,它們是從高斯分佈繪製的2d座標。在MATLAB中實現樸素貝葉斯算法 - 需要一些指導

的樣品是2D點,他們是像這些(1000個樣本爲A類和1000個樣本爲B類): 我只是張貼一些這裏:

5.867766 3.843014 5.019520 2.874257 1.787476 4.483156 4.494783 3.551501 1.212243 5.949315 2.216728 4.126151 2.864502 3.139245 1.532942 6.669650 6.569531 5.032038 2.552391 5.753817 2.610070 4.251235 1.943493 4.326230 1.617939 4.948345

如果有新的測試數據進入,我應該如何對測試樣本進行分類? P(Class/TestPoint)與P(TestPoint/Class)*(ProbabilityOfClass)成正比。

我不確定我們如何計算給定2D座標的P(Sample/Class)變量。現在,我使用公式

P(座標/類)=(座標 - 該類的平均值)/該類中點的標準差)。

但是,我沒有得到很好的測試結果與此。我做錯了什麼?

回答

3

也就是說的好方法,但是公式是不正確的,看multivariate gaussian distribution article on wikipedia

P(測試點|類)= enter image description here

其中enter image description here是A.

的行列式
Sigma = classPoint*classPoint'; 
mu = mean(classPoint,2); 
proba = 1/((2*pi)^(2/2)*det(Sigma)^(1/2))*... 
     exp(-1/2*(testPoint-mu)*inv(Sigma)*(testPoint-mu)'); 

在你的情況下,由於它們在兩個類,P(類)作爲多點= 1/

+0

這些訓練樣本是如何: http://tinypic.com/r/nplvo0/5 大約有2000訓練樣本(1000從每個類)。我從每個類中選擇了100個隨機樣本,用它訓練了樸素貝葉斯分類器,並試圖預測剩下的類標籤。 這是我得到的結果。 http://tinypic.com/view.php?pic=2j1n7f9&s=5 很明顯,我錯了。我會嘗試使用Oli發佈的公式並在此處發佈結果。 – user1067334

+0

http://tinypic.com/r/684lt4/5 這是我看到的公式中的分類。非常感謝:)我不知道我錯過了什麼,我可以應用高斯分佈的pdf來獲得屬於某個類的點的概率。 – user1067334

+0

錯誤分類大大降低。再次感謝你。 – user1067334

0

假設您的公式已正確應用,另一個問題可能是從數據點派生特徵。您的問題可能不適合線性分類器。

+0

不,他說這兩個分佈都是高斯分佈,在這種情況下,最佳分離是線性的。 – Oli