KNN演算法的最簡解釋

2021-08-26 08:43:47 字數 1708 閱讀 8024

knn是屬於監督學習中的一類分類方法,knn即k最鄰近分類演算法

1、knn演算法的核心思路

通過計算每個訓練樣本到待分類樣本的距離,取和待分類樣本最近的k個訓練樣例,k個樣本中哪個類別的訓練樣例站多數,則待分類樣品就屬於哪個類別。

這裡的距離有很多中,例如有曼哈頓距離(p=1),歐式距離(p=2)等,大家可以去查一下各種距離的應用場景有何不同;

這裡取的最近的k個訓練樣例便是,knn演算法的精髓了,因為通過選取不同的k值會有不同的結果。

2、演算法描述與具體步驟

(1)算距離

(2)對距離排序,並圈出最近的k個訓練物件

(3)做分類

具體步驟:

step.1—初始化距離為最大值

step.2—計算未知樣本和每個訓練樣本的距離 dist

step.3—得到目前k個最臨近樣本中的最大距離 maxdist

step.4—如果dist 小於 maxdist,則將該訓練樣本作為 k-最近鄰樣

step.5—重複步驟2、3、4,直到未知樣本和所有訓練樣本的距離

step.6—統計k-最近鄰樣本中每個類標號出現的次數

step.7—選擇出現頻率最大的類標號作為未知樣本的類標號

3、knn模型中三個基本要素

三個基本要素:距離度量、k值的選擇和分類決策的規程

4、演算法的優缺點

1) 優點

 簡單,易於理解,易於實現,無需估計引數,無需訓練;

 適合樣本容量比較大的分類問題

 特別適合於多分類問題(multi-modal,物件具有多個類別標籤),例如根據基因特徵來判斷其功能

分類,knn比svm 的表現要好

2) 缺點

 懶惰演算法,對測試樣本分類時的計算量大,記憶體開銷大,評分慢;

 可解釋性較差,無法給出決策樹那樣的規則

5、例項—–對電影型別進行分類

knn = neighbors.kneighborsclassifier() #取得knn分類器

data = np.array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2]]) # "font-family:arial, helvetica, sans-serif;">data 對應著

打鬥次數和接吻次數

labels = np.array([1,1,1,2,2,2]) #"font-family:arial, helvetica, sans-serif;">labels則是對應romance 和action

knn.fit(data,labels) #匯入資料進行訓練''

'

Python模組最簡解釋

乙個py檔案就是乙個模組 包就是資料夾,和資料夾不一樣的就是裡面有乙個 init py的檔案 庫就是你安裝的那個,裡面可能有很多包,包裡面又有很多模組,所以庫名不一定是包名 搞乙個資料夾,隨便叫什麼,把你寫好的包放進去,在這個資料夾下寫乙個setup.py的檔案,內容大致如下 from distut...

KNN分類演算法簡解

本篇文章旨在幫助小夥伴們最快速地理解knn knn演算法即k 鄰近演算法,他可以解決這樣的問題 我手裡有資料集,可以將其想象成一堆人,這些人都已經分好類了,根據什麼分的類呢?根據一些我們約定的特徵 比如身高,性別,愛好啊等等 我想要幹什麼呢?是這樣,現在我拉來乙個新人,我把他輸入到knn,knn就有...

k最鄰近演算法 加權kNN

上篇文章中提到為每個點的距離增加乙個權重,使得距離近的點可以得到更大的權重,在此描述如何加權。該方法最簡單的形式是返回距離的倒數,比如距離d,權重1 d。有時候,完全一樣或非常接近的商品權重會很大甚至無窮大。基於這樣的原因,在距離求倒數時,在距離上加乙個常量 weight 1 distance co...