機器學習 K NN分類

2021-08-18 11:28:17 字數 2089 閱讀 1010

一、定義

1、k-nn分類全稱為k近鄰法(k-nearest neighbor),是一種基本回歸與分類方法:給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最近的k個例項,這k個例項中多數例項屬於某一類,就把該輸入例項分為這一類。

2、好比說,你周圍的同學大都是些好學生,你也會被認為是好學生;你周圍大都是些混混,那你也會被認為是混混。(其實這只是一種誤解哈哈哈)

二、解決什麼問題?

1、根據已有的分類情況,對未知型別的資料進行分類。

2、舉個例子

這是一些球員的職業生涯資料,其中包括場均得分和場均助攻,大家知道現在的控衛和傳統控衛有很多不同,現在的控衛進攻能力更強,而傳統控衛更偏向於組織串聯球隊。兩種風格的控衛在資料上有很明顯的區別,得分型控衛得分更高,傳統控衛助攻更多,而一些身材高大的控衛比如西蒙斯、鮑爾則更加全面,此處就不涉及討論。那麼對於林書豪來說,針對他的資料就不好一眼看出他是哪種型別的控衛,這裡我們就可以用k-近鄰演算法進行分類。

三、具體步驟

度量球員與球員之間的距離最明顯的就是直接對比球員之間各個資料的差值,比如球員a場均20+10,球員b場均19+9,那麼就認為這兩個球員及其相似了。而我們所要計算的就是球員之間,各個資料的差值的總和,計算差值的方式很多種。

1、匯入球員資料,將球員的資料和分類記為:[場均得分,場均助攻,型別]

2、計算歐式距離(令a為已知型別球員a,b為待分類球員b),其中x上標i是球員的各類資料:

3、重複2,將每個已知分類球員與待分類球員的距離求出

4、求出所有距離後,做一次排序,取距離最近的k個球員,統計這k個球員的型別,其中型別最多的,就把這個型別當做是待分類球員的型別

四、python實現

1、先看資料,格式為csv

2、匯入資料

3、計算距離

歐式距離,注意資料型別

4、分類

5、執行效果

五、拓展

1、通俗來說,k-nn演算法讓被測目標去尋找它的同類,這個同類的判斷依據就是,比較的兩個物件,它們的各個屬性(特徵)的差別總和。取到與被測物件差別最小的k個物件,這k個物件中,絕大部分應該是屬於同一類的,如果這k個物件所屬的類別不符合這個規律,那麼要考慮k值的選取以及比較的屬性(特徵)是否真正能反應不同類別之間的差距。

2、k值的選取

k值的選取會對結果產生重大影響,當k值較小時,學習的近似誤差會減小,只有與輸入例項較近的訓練例項才會對**結果起作用,但學習的估計誤差會增大,**結果對近鄰的例項點非常敏感。k的減小會使整體模型變得複雜,容易發生過擬合。

k值較大時,估計誤差減小,近似誤差增大,這時與輸入例項較遠的訓練例項也會對**起作用,使**錯誤。k值增大意味著整體模型變得簡單。

實際應用中,k值一般取乙個比較小的值。

3、距離公式除歐式以外還有很多,這是曼哈頓距離

機器學習 K NN分類 回歸

k近鄰 從字面上理解,就是 近朱者赤,近墨者黑。和誰離得近和誰歸為一類。1 演算法原理 1 計算測試資料與各個訓練資料之間的距離,方法 閔可夫斯基距離 2 按照距離的遞增順序排序 3 選取距離最小的k個點 4 確定前k個點所在類別的出現頻率 即為各個類別出現次數 5 返回前k個點所在類別的出現頻率,...

python 機器學習KNN分類演算法

k近鄰演算法是機器學習中最簡單的演算法,其可以做最基本的分類操作,偽 如下 對未知類別屬性的資料集中的每個點依次執行以下操作 1 計算已知類別資料集中的每個點與當前點之間的距離 2 按照距離遞增次序排序 3 選怒與當前點距離最小的k個點 4 確定前k個點所在類別出現的頻率 5 返回前k個點出現頻率最...

機器學習 KNN分類演算法(上)

k近鄰演算法是機器學習演算法最簡單的演算法,流程如下 1 計算測試物件到訓練集中每個物件的距離 2 按照距離的遠近排序 3 選取與當前測試物件最近的k個物件,作為該測試物件的鄰居 4 統計這k個鄰居的類別頻率 5 k個鄰居裡頻率最高的類別,即為測試物件的類別 1 自實現knn演算法import nu...