機器學習 | 淺談K-近鄰算法

K-近鄰(KNN)算法是解決分類問題的算法。既能夠解決二分類,也能夠解決多分類問題。html

其實它也能夠解決迴歸問題。算法

 

 

K-近鄰原理:spa

  某個樣本的類別,由與之最相近的K個鄰居投票所決定。3d

  例子:htm

  如今有一個樣本集,其中全部數據都已經標記好類別,假設有一個未知類別的樣本x須要進行分類。blog

  在離這個樣本距離最近的K個樣本中,統計各個類別的佔比。假設k=5時,計算出哪5個樣本離未知樣本x最近,排序

  而後統計它們的類別,如在這5個樣本中,有2個屬於類別A,3個屬於類別B。因爲類別B的佔比比較高,class

  因此得出樣本x屬於類別B。原理

  如圖:遍歷

        

   紅點的類別爲class A ,藍點的類別爲class B,黑點表示須要預測類別的樣本x。

   經過Knn算法,當k=5時:

   

    離黑點(樣本x)最近的5(K所決定)個樣本中,有3個藍點,2個紅點。因此可斷定黑點和藍點屬同一個類別,爲class B

    既然K的取值決定了取K個鄰居進行投票。那麼當K取其餘值,又是什麼狀況呢?

    (另外一種狀況)當k=3時:

        

    此時離黑點最近的3個鄰居中,2個紅點,1個藍點,所以紅點佔比高,因此能夠斷定黑點和紅點同樣屬於class A類別

    經過對比可知:

      

     在K-近鄰中,K的取值影響了最終預測的結果。

 

K-近鄰僞代碼:

    1.遍歷訓練集全部樣本,計算每一個樣本與樣本x之間的距離,保存全部距離

    2.對這些距離進行排序(升序),取出k個最近的樣本

    3.對k個樣本的類別進行統計,找出佔比最高的類別

    4.待標記樣本的類別就是佔比最高的類別 

 

      

 

    

 

原文出處:https://www.cnblogs.com/qiutenglong/p/10961222.html

相關文章
相關標籤/搜索