樸素貝葉斯分類MATLAB實現

2021-08-16 21:33:42 字數 1377 閱讀 4850

[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 ...