優(yōu)點
pythonk-近鄰算法簡單,易于理解,易于實現(xiàn),無需參數(shù)估計,無需訓(xùn)練,即可以用來做分類也可以用來做回歸
和樸素貝葉斯算法比,對數(shù)據(jù)沒有假設(shè),準(zhǔn)確度高,對異常值不敏感(個別噪音數(shù)據(jù)對結(jié)果的影響不是很大)
適合對稀有事件進行分類,也可以用于非線性分類
適合于多分類問題(multi-modal,對象具有多個類別標(biāo)簽),KNN要比SVM表現(xiàn)好
訓(xùn)練時間復(fù)雜度比支持向量機之類的算法低,僅為O(n)
由于KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合
該算法比較適用于樣本容量比較大的類域的自動分類,而那些樣本容量較小的類域采用這種算法比較容易誤分
缺點
對測試樣本分類時的計算量大,內(nèi)存開銷大,因為對每個待分類的文本都要計算它到全體已知樣本的距離,才能求得它的K個最近鄰點,目前常用的解決方法是對已知的樣本點進行剪輯,事先要去除對分類作用不大的樣本
可解析性差,無法告訴你哪個變量更重要,無法給出決策樹那樣的規(guī)則
k值的選擇:最大的缺點是當(dāng)樣本不平衡時,如一個類的樣本容量很大,而其他樣本容量很小時候,有可能導(dǎo)致當(dāng)輸入一個新樣本時,該樣本的K個鄰居中大容量類的樣本占多數(shù)。該算法只計算“最近的”鄰居樣本,某一類的樣本數(shù)量很大的時候,那么或者這類樣本并不接近目標(biāo)樣本,或者這類樣本很靠近目標(biāo)樣本。無論如何,數(shù)量并不影響運行結(jié)果,可以采用權(quán)值的方法(和該樣本距離小的鄰居權(quán)重大)來改進
KNN是一種消極學(xué)習(xí)方法,懶惰算法,導(dǎo)致預(yù)測時速度比起邏輯回歸之類的算法慢
相對于決策樹模型,KNN模型可解釋性不強
KD樹,球樹之類的模型建立需要大量的內(nèi)存
以上內(nèi)容為大家介紹了Pythonk-近鄰算法的優(yōu)缺點,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。