本筆記為參加阿里云“天池龍珠計(jì)劃 機(jī)器學(xué)習(xí)訓(xùn)練營(yíng)”所做的學(xué)習(xí)記錄,代碼及知識(shí)內(nèi)容均來(lái)源于訓(xùn)練營(yíng)捶箱,本人稍作擴(kuò)充。
具體活動(dòng)內(nèi)容請(qǐng)移步阿里云天池龍珠計(jì)劃; 同時(shí)感謝公眾號(hào)“機(jī)器學(xué)習(xí)煉丹術(shù)”的介紹页响、推廣和組織闺魏。
1 KNN的介紹和應(yīng)用
1.1 KNN的介紹
kNN(k-nearest neighbors),中文翻譯K近鄰鸭限。我們常常聽(tīng)到一個(gè)故事:如果要了解一個(gè)人的經(jīng)濟(jì)水平蜕径,只需要知道他最好的5個(gè)朋友的經(jīng)濟(jì)能力, 對(duì)他的這五個(gè)人的經(jīng)濟(jì)水平求平均就是這個(gè)人的經(jīng)濟(jì)水平败京。這句話里面就包含著kNN的算法思想兜喻。
示例 :如上圖,綠色圓要被決定賦予哪個(gè)類(lèi)赡麦,是紅色三角形還是藍(lán)色四方形朴皆?如果K=3,由于紅色三角形所占比例為2/3泛粹,綠色圓將被賦予紅色三角形那個(gè)類(lèi)遂铡,如果K=5,由于藍(lán)色四方形比例為3/5戚扳,因此綠色圓被賦予藍(lán)色四方形類(lèi)忧便。
1) KNN建立過(guò)程
1 給定測(cè)試樣本,計(jì)算它與訓(xùn)練集中的每一個(gè)樣本的距離帽借。
2 找出距離近期的K個(gè)訓(xùn)練樣本珠增。作為測(cè)試樣本的近鄰。
3 依據(jù)這K個(gè)近鄰歸屬的類(lèi)別來(lái)確定樣本的類(lèi)別砍艾。
2) 類(lèi)別的判定
①投票決定蒂教,少數(shù)服從多數(shù)。取類(lèi)別最多的為測(cè)試樣本類(lèi)別脆荷。
②加權(quán)投票法凝垛,依據(jù)計(jì)算得出距離的遠(yuǎn)近,對(duì)近鄰的投票進(jìn)行加權(quán)蜓谋,距離越近則權(quán)重越大梦皮,設(shè)定權(quán)重為距離平方的倒數(shù)。
1.2 KNN的應(yīng)用
KNN雖然很簡(jiǎn)單桃焕,但是人們常說(shuō)"大道至簡(jiǎn)"剑肯,一句"物以類(lèi)聚,人以群分"就能揭開(kāi)其面紗观堂,看似簡(jiǎn)單的KNN即能做分類(lèi)又能做回歸让网, 還能用來(lái)做數(shù)據(jù)預(yù)處理的缺失值填充呀忧。由于KNN模型具有很好的解釋性,一般情況下對(duì)于簡(jiǎn)單的機(jī)器學(xué)習(xí)問(wèn)題溃睹,我們可以使用KNN作為 Baseline而账,對(duì)于每一個(gè)預(yù)測(cè)結(jié)果,我們可以很好的進(jìn)行解釋因篇。推薦系統(tǒng)的中泞辐,也有著KNN的影子。例如文章推薦系統(tǒng)中竞滓, 對(duì)于一個(gè)用戶(hù)A铛碑,我們可以把和A最相近的k個(gè)用戶(hù),瀏覽過(guò)的文章推送給A虽界。
機(jī)器學(xué)習(xí)領(lǐng)域中,數(shù)據(jù)往往很重要涛菠,有句話叫做:"數(shù)據(jù)決定任務(wù)的上限, 模型的目標(biāo)是無(wú)限接近這個(gè)上限"莉御。 可以看到好的數(shù)據(jù)非常重要,但是由于各種原因俗冻,我們得到的數(shù)據(jù)是有缺失的礁叔,如果我們能夠很好的填充這些缺失值, 就能夠得到更好的數(shù)據(jù)迄薄,以至于訓(xùn)練出來(lái)更魯棒的模型琅关。接下來(lái)我們就來(lái)看看KNN如果做分類(lèi),怎么做回歸以及怎么填充空值讥蔽。
2 實(shí)驗(yàn)室手冊(cè)
2.1 實(shí)驗(yàn)環(huán)境
1\. python3.7
2\. numpy >= '1.16.4'
3\. sklearn >= '0.23.1'
2.2 學(xué)習(xí)目標(biāo)
- 了解KNN怎么做分類(lèi)問(wèn)題
- 了解KNN如何做回歸
- 了解KNN怎么做空值填充, 如何使用knn構(gòu)建帶有空值的pipeline
2.3 代碼流程
-
二維數(shù)據(jù)集--knn分類(lèi)
- Step1: 庫(kù)函數(shù)導(dǎo)入
- Step2: 數(shù)據(jù)導(dǎo)入
- Step3: 模型訓(xùn)練&可視化
- Step4: 原理簡(jiǎn)析
-
鳶尾花數(shù)據(jù)集--KNN分類(lèi)
- Step1: 庫(kù)函數(shù)導(dǎo)入
- Step2: 數(shù)據(jù)導(dǎo)入&分析
- Step3: 模型訓(xùn)練
- Step4: 模型預(yù)測(cè)&可視化
-
模擬數(shù)據(jù)集--KNN回歸
- Step1: 庫(kù)函數(shù)導(dǎo)入
- Step2: 數(shù)據(jù)導(dǎo)入&分析
- Step3: 模型訓(xùn)練&可視化
-
馬絞痛數(shù)據(jù)--kNN數(shù)據(jù)預(yù)處理+kNN分類(lèi)pipeline
- Step1: 庫(kù)函數(shù)導(dǎo)入
- Step2: 數(shù)據(jù)導(dǎo)入&分析
- Step3: KNNImputer空值填充--使用和原理介紹
- Step4: KNNImputer空值填充--歐式距離的計(jì)算
- Step5: 基于pipeline模型預(yù)測(cè)&可視化