[b] = xlsread('mix.xlsx',1,'a1:c1628');
x = b(:,1);
y = b(:,2);
c = b(:,3);
data = [x,y];
num = 500;%樣本數量
test = sortrows([x(1:num,1),y(1:num,1),c(1:num,1)],3);%為方便處理按類對樣本排序
temp = zeros(23,5);%用來儲存樣本中各個屬性的均值、方差和每個類的概率
%計算出樣本中各個屬性的均值、方差和每個類的概率
for i = 1:23
x = ;
y = ;
count = 0;
for j = 1:num
if test(j,3)==i
x = [x;test(j,1)];
y = [y;test(j,2)];
count = count + 1;
endend
temp(i,1) = mean(x);
temp(i,2) = std(x);
temp(i,3) = mean(y);
temp(i,4) = std(y);
temp(i,5) = count/num;
end%計算**結果
result = ;
for m = 1:1628
pre = ;
for n = 1:23
px = 1/temp(n,2)*exp(((data(m,1)-temp(n,1))^2)/-2/(temp(n,2)^2));
py = 1/temp(n,4)*exp(((data(m,2)-temp(n,3))^2)/-2/(temp(n,4)^2));
pre = [pre;px*py*temp(n,5)*10^8];
end[da,index]=max(pre);
result = [result;index];
endxlswrite('mix.xlsx',result,'e1:e1628');
%畫圖for i = 1:1628
rand('seed',result(i,1));
color = rand(1,3);
plot(x(i,1),y(i,1),'*','color',color);
hold on;
end
%檢視正確率
num = 0;
for i = 1:1628
if result(i)==c(i)
num = num+1;%正確的個數
endend
其實matlab有現成的封裝好的分類方法,這裡只不過是把過程寫了一下而已。 樸素貝葉斯分類演算法(matlab實現)
對於兩個事件a,b而言,事件發生的概率記為p a p b 事件a發生的前提下,事件b發生的概率為 事件b發生的前提下,事件a發生的概率為 由此可得事件ab同時發生的概率為 從而推導出貝葉斯公式 在已知的乙個資料集中,決策變數為x1,x2,x3.目標量是y,就能夠引用上述公式 在y取不同值時,分母都是...
樸素貝葉斯分類
1 貝葉斯分類是一類分類演算法的總稱,這類演算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。2 樸素貝葉斯的思想基礎是這樣的 對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認為此待分類項屬於哪個類別。通俗來說,就好比這麼個道理,你在街上看到乙個黑人,我問你你猜這哥們 來的,...
樸素貝葉斯分類
摘自寫在公司內部的wiki 要解決的問題 表中增加欄位classification,有四個取值 0 初始值,未分類 1 positive 2 normal 99 negative review submit前,由樸素貝葉斯分類器決定該條review的flag屬於negative還是positive ...