K-近鄰算法(KNN)


KNN算法是采用測量不同特征向量之間的距離的方法進行分類。

工作原理:存在一個數據集,數據集中的每個數據都有對應的標簽,當輸入一個新的沒有標簽的數據時,KNN算法找到與新數據特征量最相似的分類標簽。

KNN算法步驟:

(1)選擇鄰近的數量k和距離度量方法;

(2)找到待分類樣本的k個最近鄰居;

(3)根據最鄰近的類標進行多數投票。

 

KNN算法優點:精度高,對異常值不敏感,無數據輸入假定;

               缺點:計算復雜度高,空間復雜度高。

               適用范圍:數值型、標稱型

 python 代碼:

KNeighborsClassifier中的參數

參數 含義
n_neighbors k值,默認為5
weights

k個近鄰樣本的權重。可選值:uniform、distance,默認為uniform。

uniform:所有最近鄰樣本權重一樣;

distance:權重和距離成反比;

還可以自定義權重,即自定義一個函數,輸入距離值,輸出權重值。

algorithm

算法,可選值:'auto', 'ball_tree', 'kd_tree', 'brute'。

'ball_tree':球樹實現

'kd_tree':KD樹實現

'brute’:蠻力實現

'auto':會在上述三種算法中做權衡,選擇一個擬合最好的最優算法。

leaf_size

用於控制KD樹或球樹停止建子樹的葉子節點閾值,默認為30。這個值越小,生成的KD樹或球樹越大,層數越深,耗時越長。

隨着樣本的增加,這個值要增加。

metric 距離度量,默認為'minkowski' 即閔可夫斯基距離。
p 距離度量參數metric附屬參數,只用於'minkowski'中p值的選擇,p=1,位曼哈頓距離,p=2位歐式距離,默認為2。
metric_params 距離度量的其他附屬參數,主要用於帶權重閔可夫斯基距離的權重,以及其他一些復雜的距離度量的參數。
 n_jobs 並行處理任務數,默認值為1。

 

#KNN
1 import numpy as np 2 import pandas as pd 3 from sklearn.neighbors import KNeighborsClassifier 4 df=pd.read_csv(r'E:\data analysis\test\classification.csv')#訓練數據集 5 df_test=pd.read_csv(r'E:\data analysis\test\classification_test.csv')#測試數據集 6 x=df.ix[:,:-1] #特征值 7 y=df.ix[:,-1] #目標變量 8 knn=KNeighborsClassifier(n_neighbors=5) #取得knn分類器 9 knn.fit(x,y) #導入數據進行訓練 10 print(knn.predict (df_test)) #對新數據進行分類

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM