1. 程式人生 > >Fisher線性分類器和貝葉斯決策

Fisher線性分類器和貝葉斯決策

Fisher的原理

其實就是將所有的樣本投影到一個一維的線性空間,然後做分類。

第一步是求解最優的投影方向。

這部分是主程式碼1

%函式作用:根據訓練樣本求出投影方向
%引數說明:w1是第一類的樣本自變數,w2是第二類的樣本自變數
function wk=myfisher(w1,w2)  
[x1,y] = size(w1);  
[x2,~] = size(w2); 
u1=mean(w1);% wi類的樣本均值 
u2=mean(w2);

% 總類內散佈矩陣
s1 = zeros(y); 
s2 = zeros(y); 
for qt = 1:x1 
        s1 = s1 + (w1(qt,:) - u1)'*(w1(qt,:) - u1); 
end
for qt = 1:x2 
        s2 = s2 + (w2(qt,:) - u2)'
*(w2(qt,:) - u2); end sw = s1 + s2; %投影向量的計算公式,計算最優方向的直線 wk = inv(sw) * (u1-u2)';% 最優方向的特徵向量 % wk = wk/sqrt(sum(wk.^2)); % 特徵向量單位化

如果有需要,這部分是樣本的按照類別的劃分程式碼

%將訓練樣本按照yTrain01分為兩類w1,w2
a1=find(yTrain==0);
a2=find(yTrain);
w1=zeros(size(a1),10);
w2=zeros(size(a2),10);
for i=1:size(a1)
    w1(i,:)=XTrain(a1(i
),:); end for i=1:size(a2) w2(i,:)=XTrain(a2(i),:); end %將測試樣本按照yTest01分為兩類w3,w4 a3=find(yTest==0); a4=find(yTest); w3=zeros(size(a3),10); w4=zeros(size(a4),10); for i=1:size(a3) w3(i,:)=XTest(a3(i),:); end for i=1:size(a4) w4(i,:)=XTest(a4(i),:); end

第二步是投影向量,然後再分類。

分類分為兩步:概率(概率密度)估計和決策。
分類就有很多思路了,這裡給的是用Parzen窗做非引數估計然後做貝葉斯決策。
決策常用最小錯誤率和最小風險的決策,其實本質上沒有什麼區別,只是判別的時候給先驗乘個係數。

貝葉斯的運用只需要知道,比較計算P(wi)P(x|wi)。原理就是貝葉斯公式,這裡不詳細講,有疑問可以留言

Parzen窗實現的核心程式碼:

 sigma = sig / sqrt(j);
 p(i,k) = p(i,k) + exp(-(x(k) - w1(j))*(x(k) - w1(j))'/ (2 * power(sigma,2))) / (sigma * sqrt(2*3.1415926));

Parzen窗分類

function ParzenClassify(y1,y2,y3,y4,Pro)
[~,x1] = size(y1);  %訓練樣本
[~,x2] = size(y2); 
[~,x3] = size(y3);  %測試樣本
[~,x4] = size(y4); 

%%
%正確分類的散點個數 
right1 = 0; right2 = 0; 
P3=Parzen(y1',y2',y3',1);
for t = 1:x3
    if (P3(1,t)*Pro >= P3(2,t)) %Pro是先驗比例
        right1 = right1 + 1; 
        plot(y3(t),2,'gp');hold on
    else
        plot(y3(t),2,'rp');hold on
    end
end
P4=Parzen(y1',y2',y4',1);
for t = 1:x4
    if (P4(1,t)*Pro <= P4(2,t)) %Pro是先驗比例
        right2 = right2 + 1; 
        plot(y4(t),3,'gp');hold on
    else
        plot(y4(t),3,'rp');hold on
    end
end
rightRate1 = right1 / x3; 
rightRate2 = right2 / x4; 
rightRate=(right1+right2)/(x3+x4);
disp(['使用最佳方向時第一類的錯分點個數為:',num2str(x3 - right1)]); 
disp(['使用最佳方向時第一類的分類準確率為:',num2str(rightRate1 * 100),'%']); 
disp(['使用最佳方向時第二類的錯分點個數為:',num2str(x4 - right2)]); 
disp(['使用最佳方向時第二類的分類準確率為:',num2str(rightRate2 * 100),'%']);
disp(['總分類準確率為:',num2str(rightRate * 100),'%']);

其實核心分類就只有P=Parzen(y1',y2',w,1);if (P3(1,t)*Pro >= P3(2,t))...
其中W是輸入的自變數,P是得到的概率,比較屬於第一類的概率和第二類的概率然後分類。
注意乘上先驗和損失函式。

相關推薦

Fisher線性分類決策

Fisher的原理 其實就是將所有的樣本投影到一個一維的線性空間,然後做分類。 第一步是求解最優的投影方向。 這部分是主程式碼1 %函式作用:根據訓練樣本求出投影方向 %引數說明:w1是第一類的樣本自變數,w2是第二類的樣本自變數 functio

機器學習----分類決策論極大似然估計)

貝葉斯決策論 貝葉斯決策論(Bayesian decision theory)是概率框架下實施決策的基本方法。在所有相關概率都已知的理想情況下,貝葉斯決策論考慮如何基於這些概率和誤判斷來選擇最優的類別標記。 假設有N種可能的類別標記,即Y={c1,c2,.

線性分類模型(四)——觀點下的Logistic迴歸

拉普拉斯近似 目標:因為待近似的分佈p(z)p(\pmb{z})p(zzz)不是高斯分佈,故尋找一個高斯近似q(z)q(\pmb{z})q(zzz),它的中心位於p(z)p(\pmb{z})p(zzz)的眾數的位置。 思路:將待近似的分佈p(z)p(\pmb{

情感分析方法之snownlp分類(三)

《情感分析方法之nltk情感分析器和SVM分類器(二)》主要使用nltk處理英文語料,使用SVM分類器處理中文語料。實際的新聞評論中既包含英文,又包含中文和阿拉伯文。本次主要使用snownlp處理中文語料。一、snownlp使用from snownlp import Snow

《Spark機器學習》筆記——Spark分類模型(線性迴歸、樸素決策樹、支援向量機)

一、分類模型的種類 1.1、線性模型 1.1.1、邏輯迴歸 1.2.3、線性支援向量機 1.2、樸素貝葉斯模型 1.3、決策樹模型 二、從資料中抽取合適的特徵 MLlib中的分類模型通過LabeledPoint(label: Double, features

分類演算法-----樸素原理python實現

本文主要介紹一下內容:1貝葉斯,2 樸素貝葉斯的推導,3 最大似然估計的推到過程,4樸素貝葉斯的計算步驟 ,5 貝葉斯估計 1 貝葉斯  假設有兩類資料p1(x,y)表示(x,y)屬於類別1,用p2(x,y)表示(x,y)屬於類別2,那麼對於一個新的資料集(x,y),可以

機器學習:總結_3:線性迴歸迴歸

線性迴歸的基函式模型 y(x,w)=w0+w1x1+......+wDxD y(x,w)=w0+∑M−1j=1wjϕj(x) ϕj(x):是基函數 基函式:多項式;高斯;sigmoid函式 基函

模式識別導論大作業(k均值演算法,感知演算法,fisher演算法,決策,特徵提取)

模式識別導論大作業 一、      K均值聚類 1.      功能描述: 利用K-均值演算法將150個模式樣本分成3類別。分別計算最後演算法所用的迭代次數,最終聚類中心以及每個類別中對應模式樣本的序號。 2.      帶註釋的原始碼 #include "st

決策分類 MNIST手寫數據集 分類 python實現

row 出了 net 訓練集 貝葉斯公式 影響 集中 oat blog 轉載: (1) https://zhuanlan.zhihu.com/p/51200626    (2) 菊安醬的機器學習第三期    (3) 代碼來自:https://github.com

基於概率論的分類方法:樸素算法實踐學習

取出 對數 pri 場景 比例 pro ngs 什麽 inf 關於本文說明,本人原博客地址位於http://blog.csdn.net/qq_37608890,本文來自筆者於2017年12月12日 13:03:46所撰寫內容(http://blog.csdn.n

Python代碼理論告訴你,誰是最好的棒球選手

AMM nes labs 最終 via 現實生活 alt www .net 編譯:李雷、張馨月、王夢澤、小魚 除了文中所附的代碼塊,你也可以在文末找到整個程序在Jupyter Notebook上的鏈接。 在數據科學或統計學領域的眾多話題當中,我覺得既有趣但又難理解的一個就是

分類:樸素分類方法

       樸素貝葉斯分類方法的特點是基於概率方法實現分類,這在諸多的分類方法中比較少見。貝葉斯方法都有所耳聞,之所以稱為“樸素”貝葉斯方法,是因為在分類時,假定了“各變數間相互獨立”的條件,這個條件算是比較強的了,大大簡化了分類時的計算,但同時也丟失了一些

斯坦福大學-自然語言處理入門 筆記 第六課 文字分類與樸素

一、文字分類任務概述 1、應用領域 歸類 垃圾郵件識別 作者識別 性別/年齡識別 等等 2、定義 輸入:一個文件d,一系列固定的型別C={c1,c2,…,cj} 輸出:預測類別c ∈ C 3、分類方法

分類設計之線性分類線性SVM(含Matlab程式碼)

對於高維空間的兩類問題,最直接的方法是找到一個最佳的分類超平面,使得並且,對於所有的正負訓練樣本和. 因此,以上問題可以表達為: 問題P0可以轉化為 兩邊除以\epsilon,並且做變數替換,最終得到下面的線性規化(linear programming

淺談頻率學派學派

【寫在前面的話】 終於可以寫貝葉斯相關的文章啦,心情有點小激動,最近一段時間反覆看Bishop老師編寫的<<Pattern Recognition and Machine Learning>>前三章章節,發現貝葉斯思想真是太強大了,瞬間成為該書作者的忠實粉絲。在後續的

【學習筆記】Pattern Recognition&Machine Learning [1.2] Probability Theory(2) 基於高分佈理論的曲線擬合

    高斯分佈不必贅述,這裡記錄個有意思的東西,即從高斯分佈和貝葉斯理論出發看曲線擬合(即選擇引數w)。     首先假設我們使用多項式擬合曲線,根據泰勒展開的方法,我們可以用有限項多項式在一定精度內擬合任何曲線。  &nb

最大似然引數估計

引數估計是指已知分類器結構或函式形式,從訓練樣本中估計引數。以貝葉斯分類為例,假定概率密度分佈符合一維高斯分佈,則引數估計的任務就是根據訓練樣本估計μ和σ。常用的引數估計方法有最大似然估計和貝葉斯引數估計法。 最大似然估計 假設引數為確定值,根據似然度最大進行最

聯合概率及其分佈、邊緣概率及其分佈、條件概率及其分佈定理

文章目錄 聯合概率及其分佈、邊緣概率及其分佈、條件概率及其分佈 聯合概率與聯合概率分佈 邊緣概率與邊緣概率分佈 條件概率與條件概率分佈 聯合概率、邊緣概率、條件概率之間的關係 離散型分佈的情況 連

引數估計:思想引數估計

貝葉斯與頻率派思想頻率派思想    長久以來,人們對一件事情發生或不發生,只有固定的0和1,即要麼發生,要麼不發生,從來不會去考慮某件事情發生的概率有多大,不發生的概率又是多大。而且事情發生或不發生的概率雖然未知,但最起碼是一個確定的值。比如如果問那時的人們一個問題:“有一個

Fisher 線性分類(1)----Fisher準則函式

Fisher 線性分類器由R.A.Fisher在1936年提出,至今都有很大的研究意義,下面介紹Fisher分類器的Fisher準則函式 Fisher準則函式 在模式識別的分類演算法中,大概可以分為兩類,一種是基於貝葉斯理論的分類器,該型別分類器也稱為引數判別方法,根據是基