K-近鄰(KNN)算法是解決分類問題的算法。既能夠解決二分類,也能夠解決多分類問題。算法
其實它也能夠解決迴歸問題。spa
K-近鄰原理:3d
某個樣本的類別,由與之最相近的K個鄰居投票所決定。blog
例子:排序
如今有一個樣本集,其中全部數據都已經標記好類別,假設有一個未知類別的樣本x須要進行分類。class
在離這個樣本距離最近的K個樣本中,統計各個類別的佔比。假設k=5時,計算出哪5個樣本離未知樣本x最近,原理
而後統計它們的類別,如在這5個樣本中,有2個屬於類別A,3個屬於類別B。因爲類別B的佔比比較高,bfc
因此得出樣本x屬於類別B。遍歷
如圖:im
紅點的類別爲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.待標記樣本的類別就是佔比最高的類別