K近鄰(k-nearest neighbor, k-NN)算法筆記(一)-Python

大家好,我是一枚小小的北漂渣碩毅往,為了更加有效率地督促自己系統(tǒng)的學(xué)習(xí)檩淋、及時(shí)將自己的學(xué)習(xí)心得分享給處于類似學(xué)習(xí)階段的朋友芬为,同時(shí)也為了獲得大家的指導(dǎo),我開啟了自己的博文之旅狼钮,如果有侵權(quán)碳柱、錯(cuò)誤等捡絮,請(qǐng)大家及時(shí)反饋熬芜,我一定改正。謝謝大家~~

本人目前正在學(xué)習(xí)機(jī)器學(xué)習(xí)福稳,分享的內(nèi)容也主要是知識(shí)涎拉、編程、自我的認(rèn)知的圆。好噠鼓拧,開始正文。這段時(shí)間越妈,我正在學(xué)習(xí)機(jī)器學(xué)習(xí)的核心算法季俩,針對(duì)每種算法,我會(huì)分別用單純的python算法和基于scikit-learn框架來實(shí)現(xiàn)梅掠。


K-NN算法(理論知識(shí)來自Peter Harrington的《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》和李航的《統(tǒng)計(jì)學(xué)習(xí)方法》酌住,非常感謝這些優(yōu)秀人物和優(yōu)秀書籍)


K-NN算法工作原理:KNN算法是1968年由Cover和Hart提出店归。存在一個(gè)樣本數(shù)據(jù)集合, 也稱作訓(xùn)練樣本集, 并且樣本集中每個(gè)數(shù)據(jù)都存在標(biāo)簽, 即我們知道樣本集中每一數(shù)據(jù)與所屬分類的對(duì)應(yīng)關(guān)系。輸人沒有標(biāo)簽的新數(shù)據(jù)后, 將新數(shù)據(jù)的每個(gè)特征與樣本集中數(shù)據(jù)對(duì)應(yīng)的特征進(jìn)行比較, 然后算法提取樣本集中特征最相似數(shù)據(jù)(最近鄰)的分類標(biāo)簽酪我。一般來說, 只選擇樣本數(shù)據(jù)集中前k個(gè)最相似的數(shù)據(jù),

這就是KNN算法中k的出處消痛。通常,k是不大于20的整數(shù)(較大的k可以抑制噪聲都哭,但是會(huì)使得分類邊界不明顯)秩伞。最后, 選擇k個(gè)最相似數(shù)據(jù)中出現(xiàn)次數(shù)最多的分類,作為新數(shù)據(jù)的分類

k近鄰法實(shí)際上利用訓(xùn)練數(shù)據(jù)集對(duì)特征向量空間進(jìn)行劃分,并作為其分類的“模型”欺矫。k值的選擇纱新、距離度量及分類決策規(guī)則是k近鄰法的三個(gè)基本要素。

K-NN算法的適用場(chǎng)景:樣本在50k-100k之間穆趴,具有明確的離散標(biāo)簽的數(shù)據(jù)分類或者有連續(xù)標(biāo)簽的數(shù)據(jù)回歸怒炸。

K-NN算法的實(shí)現(xiàn)

流程:1)收集數(shù)據(jù):提供文本文件; 2)準(zhǔn)備數(shù)據(jù):使用Python解析文本文件毡代,同時(shí)如果特征值數(shù)據(jù)差異較大阅羹,需要做數(shù)值歸一化處理;3)分析數(shù)據(jù):使用Matplotlib畫二維擴(kuò)散圖教寂;4)測(cè)試算法:使用測(cè)試集來測(cè)試準(zhǔn)確度捏鱼;5)使用算法:將數(shù)據(jù)集合中的特征值輸入程序就行分類

基礎(chǔ)Python算法實(shí)現(xiàn)

1)首先準(zhǔn)備數(shù)據(jù)(如果原始數(shù)據(jù)特征值值的大小差異大,最好先繼續(xù)數(shù)據(jù)的歸一化處理酪耕。一般常用的數(shù)值歸一化方法有:最大最小值方法(最大值與最小值容易受異常點(diǎn)影響导梆,魯棒性較差,只適合傳統(tǒng)精確小數(shù)據(jù)場(chǎng)景)和正太標(biāo)準(zhǔn)化方法(在已有樣本足夠多的情況下比較穩(wěn)定迂烁,適合現(xiàn)代嘈雜大數(shù)據(jù)場(chǎng)景))


圖1-數(shù)據(jù)準(zhǔn)備

2)將訓(xùn)練集集中的三個(gè)特征值繪制出來看尼,代碼見圖2,效果見圖3


圖2-繪制特征值(代碼部分)


圖3-三種特征值之間的關(guān)系

3)接下來完成KNN算法

圖4-KNN算法代碼

備注:獲取數(shù)組的最值函數(shù)如min()或者max()以及包括后面的一些比較運(yùn)算等盟步,需要數(shù)組中數(shù)據(jù)具有統(tǒng)一的格式藏斩,否則會(huì)報(bào)錯(cuò),因此却盘,利用astype來統(tǒng)一成一樣的數(shù)據(jù)類型

4)結(jié)合測(cè)試集狰域,驗(yàn)證KNN算法的有效性(主要是基于錯(cuò)誤率)


圖5-測(cè)試算法有效性

結(jié)果表明,KNN算法中黄橘,k的取值非常重要兆览,影響算法的有效性,k的取值應(yīng)該考慮所在數(shù)據(jù)集合的大小

好噠塞关,至此基于Python完成了KNN算法的初步編程設(shè)計(jì)抬探,下一節(jié),我將基于scikit-learn來學(xué)習(xí)KNN算法帆赢,歡迎大家指點(diǎn)小压,也希望大家多多支持小菜鳥啦砰左,如果對(duì)您有幫助,請(qǐng)賞我一杯咖啡錢吧~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末场航,一起剝皮案震驚了整個(gè)濱河市缠导,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溉痢,老刑警劉巖僻造,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異孩饼,居然都是意外死亡髓削,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門镀娶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來立膛,“玉大人,你說我怎么就攤上這事梯码”Ρ茫” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵轩娶,是天一觀的道長儿奶。 經(jīng)常有香客問我,道長鳄抒,這世上最難降的妖魔是什么闯捎? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮许溅,結(jié)果婚禮上瓤鼻,老公的妹妹穿的比我還像新娘。我一直安慰自己贤重,他們只是感情好茬祷,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著游桩,像睡著了一般牲迫。 火紅的嫁衣襯著肌膚如雪耐朴。 梳的紋絲不亂的頭發(fā)上借卧,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音筛峭,去河邊找鬼铐刘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛影晓,可吹牛的內(nèi)容都是我干的镰吵。 我是一名探鬼主播檩禾,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼疤祭!你這毒婦竟也來了盼产?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤勺馆,失蹤者是張志新(化名)和其女友劉穎戏售,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體草穆,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灌灾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悲柱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锋喜。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖豌鸡,靈堂內(nèi)的尸體忽然破棺而出嘿般,到底是詐尸還是另有隱情,我是刑警寧澤涯冠,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布博个,位于F島的核電站,受9級(jí)特大地震影響功偿,放射性物質(zhì)發(fā)生泄漏盆佣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一械荷、第九天 我趴在偏房一處隱蔽的房頂上張望共耍。 院中可真熱鬧,春花似錦吨瞎、人聲如沸痹兜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽字旭。三九已至,卻和暖如春崖叫,著一層夾襖步出監(jiān)牢的瞬間遗淳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工心傀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屈暗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像养叛,于是被迫代替她去往敵國和親种呐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容