1.scikit-learn 中KNN相關(guān)的類庫
機(jī)器學(xué)習(xí)經(jīng)典庫scikit-learn中的sklearn.neighbors包集成了近鄰法相關(guān)的算法,KNN分類樹算法使用KNeighborsClassifier雳窟,回歸樹使用KNeighborsRegressor尊浪。除此之外,還有KNN的擴(kuò)展封救,即限定半徑最近鄰分類樹RadiusNeighborsClassifier和限定半徑最近鄰回歸樹RadiusNeighborsRegressor拇涤,以及最近質(zhì)心分類算法NearestCentroid。
在這些算法中誉结,KNN分類和回歸的類參數(shù)完全一樣鹅士。限定半徑最近鄰法分類和回歸的類的主要參數(shù)也和KNN基本一樣。比較特別是的最近質(zhì)心分類算法惩坑,由于它是直接選擇最近質(zhì)心來分類掉盅,所以僅有兩個參數(shù),距離度量和特征選擇距離閾值以舒。
限定半徑最近鄰算法怔接,即樣本中某系類別的樣本非常的少,甚至少于K稀轨,這導(dǎo)致稀有類別樣本在找K個最近鄰的時候扼脐,會把距離其實較遠(yuǎn)的其他樣本考慮進(jìn)來,而導(dǎo)致預(yù)測不準(zhǔn)確奋刽。為了解決這個問題瓦侮,我們限定最近鄰的一個最大距離,也就是說佣谐,我們只在一個距離范圍內(nèi)搜索所有的最近鄰肚吏,這避免了上述問題。這個距離我們一般稱為限定半徑狭魂。
最近質(zhì)心算法首先把樣本按輸出類別歸類罚攀。對于第 L類的Cl個樣本党觅。它會對這Cl個樣本的n維特征中每一維特征求平均值,最終該類別所有維度的n個平均值形成所謂的質(zhì)心點(diǎn)斋泄。對于樣本中的所有出現(xiàn)的類別杯瞻,每個類別會最終得到一個質(zhì)心點(diǎn)。當(dāng)我們做預(yù)測時炫掐,僅僅需要比較預(yù)測樣本和這些質(zhì)心的距離魁莉,最小的距離對于的質(zhì)心類別即為預(yù)測的類別。這個算法通常用在文本分類處理上募胃。
2.K近鄰法類庫參數(shù)小結(jié)
3. KNN算法的優(yōu)缺點(diǎn)
KNN的主要優(yōu)點(diǎn)有:
1) 理論成熟旗唁,思想簡單,既可以用來做分類也可以用來做回歸
2) 可用于非線性分類
3) 訓(xùn)練時間復(fù)雜度比支持向量機(jī)之類的算法低痹束,僅為O(n)
4) 和樸素貝葉斯之類的算法比检疫,對數(shù)據(jù)沒有假設(shè),準(zhǔn)確度高祷嘶,對異常點(diǎn)不敏感
5) 由于KNN方法主要靠周圍有限的鄰近的樣本电谣,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說抹蚀,KNN方法較其他方法更為適合
6)該算法比較適用于樣本容量比較大的類域的自動分類剿牺,而那些樣本容量較小的類域采用這種算法比較容易產(chǎn)生誤分
KNN的主要缺點(diǎn)有:
1)計算量大,尤其是特征數(shù)非常多的時候
2)樣本不平衡的時候环壤,對稀有類別的預(yù)測準(zhǔn)確率低
3)KD樹晒来,球樹之類的模型建立需要大量的內(nèi)存
4)使用懶散學(xué)習(xí)方法,基本上不學(xué)習(xí)郑现,導(dǎo)致預(yù)測時速度比起邏輯回歸之類的算法慢
5)相比決策樹模型湃崩,KNN模型可解釋性不強(qiáng)
參考:
2.scikit-learn K近鄰法類庫使用小結(jié)