目錄
上一篇:機器學習實戰:決策樹原來這麼簡單
在數據挖掘中,有一種算法,叫做鄰近算法,它是最簡單的分類算法之一,也叫KNN或者K近鄰。
這裏面,鄰可以理解爲鄰居,用一個思想來概括就是物以類聚,K個最近的鄰居,代表着每一個樣本都是用它最近的K個鄰近值來做判斷。
本文章節:
1、鄰近算法核心思想
2、鄰近算法優缺點
3、鄰近算法K值怎麼取合適
4、鄰近算法怎樣計算鄰居距離
5、鄰近算法sklearn參數介紹
6、鄰近算法sklearn實現
鄰近算法核心思想
KNN的核心思想,百度詞條上這麼解釋:如果一個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。 kNN方法在類別決策時,只與極少量的相鄰樣本有關。由於kNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,kNN方法較其他方法更爲適合。
看起來是不是很複雜,用簡單生活中的常識來理解一下:我有一羣朋友10個人,其中3個喜歡游泳,7個喜歡爬山,有一天這10個人聚集在一起了,他們分別帶了不懂的裝備,游泳的人帶了:游泳帽,褲衩子,游泳鏡;爬山的人帶了:登山鞋,登山包,登山杖;我,帶了登山鞋,登山包,登山杖,然後聚在一起的時候,很自然就會跟登山的人走在一起;那對於計算機來說,他並不能跟人一樣直接看出來,他得計算,計算啥,計算你的裝備,發現原來我的裝備跟登山的裝備最接近,此時判斷我爲喜歡登山。
樣本:我
特徵:游泳帽,褲衩子,游泳鏡,登山鞋,登山包,登山杖
類別:爬山,游泳
判斷標準:特徵屬性的距離,一般我們用歐氏距離來計算
小編認爲,KNN算是自然規律的最好體現,物以類聚。
鄰近算法優缺點
優點:
1、最簡單有效的分類算法
2、數據集裏面間距較小或者間距較大的效果好
3、多分類上,效果很不錯,比SVM還要好
缺點:
1、樣本數量有限制,小樣本還好,大樣本的話非常好使,時間複雜度爲O(n),此時一般採用KD-TREE或者BALL-TREE解決
2、如果數據集是隨機分佈,效果較差
3、無法很好處理不平衡問題(小編覺得不平衡問題好多現成算法都處理不好)
鄰近算法K值怎麼取合適
關於這個K值的取值,目前沒有一個標準,但是有一種經常做得方法,循環疊加法(小編自己取的)
默認K值從1開始,計算分類器的準確率,每次給K值增加1,去準確率最高的那個K值,這裏的K值,小
編的上限一般設置爲20.
鄰近算法怎樣計算鄰居距離
距離其實非常好理解,就是兩個點之間的直線距離。
目前在計算距離上,常用的方法:歐氏距離,相關度,餘弦值,曼哈頓距離
鄰近算法sklearn參數介紹
直接參考圖中設置即可。
鄰近算法sklearn實現
這次計算的結果還是跟上一篇一樣,也是100%預測,原因參考上一篇。
--END--
作者:溪雲閣
原創作品,抄襲必究。
部分圖片來源網絡,如侵權請聯繫刪除,謝謝!