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