K - 近鄰演算法
K-近鄰演算法(KNN)原理
K Nearest Neighbor
演算法又叫KNN
演算法,這個演算法是機器學習裡面一個比較經典的演算法,總體來說KNN
演算法是相對比較容易理解的演算法
定義
如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。
距離公式
兩個樣本的距離
- 曼哈頓距離(絕對值距離)
- 歐氏距離
- 明可夫斯基距離
K-近鄰演算法 API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')
n_neighbors
:int
,可選(預設=5),k_neighbors
查詢預設使用的鄰居數。algorithm:{'auto','ball_tree','kd_tree','brute'}
,可選用於計算最近鄰居的演算法:'ball_tree'
將會使用BallTree
,'kd_tree'
將使用KDTree
。'auto'
將嘗試根據傳遞給fit
方法的值來決定最合適的演算法。(不同實現方式影響效率)
案例:鳶尾花種類預測
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
if __name__ == '__main__':
# 獲取資料
iris = load_iris()
# 劃分資料集
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=6)
# 特徵工程:標準化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test) # 控制變數, 用同樣的引數進行標準化
# KNN 演算法預估器
estimator = KNeighborsClassifier(n_neighbors=3)
estimator.fit(x_train, y_train)
# 模型評估
# 方法一:直接對比真實值和預測值
y_predict = estimator.predict(x_test)
print('y_predict:\n', y_predict)
print('直接對比真實值和預測值:\n', y_test == y_predict)
# 方法二:計算準確率
score = estimator.score(x_test, y_test)
print('準確率:\n', score)
結果分析
- k 值取多大?有什麼影響?
- k值取很小:容易受到異常點的影響
- k值取很大:受到樣本均衡的問題
- 效能問題?
- 距離計算上面,時間複雜度高
K-近鄰總結
- 優點:
- 簡單,易於理解,易於實現,無需訓
- 缺點:
- 懶情演算法,對測試樣本分類時的量大, 記憶體開銷大
- 必須指定K值,K值選擇不當則分類精度不能保證
- 使用場景:小資料場景,幾千~幾萬樣本,具體場景具體業務去測試
相關文章
- K近鄰演算法演算法
- k-近鄰演算法演算法
- K-鄰近均值演算法演算法
- 分類演算法-k 鄰近演算法演算法
- K近鄰模型模型
- 機器學習——K近鄰演算法機器學習演算法
- k近鄰演算法的實現:kd樹演算法
- 機器學習-K近鄰演算法-KNN機器學習演算法KNN
- 機器學習演算法之K近鄰演算法機器學習演算法
- 機器學習-11-k近鄰演算法機器學習演算法
- 機器學習演算法——kNN(k-近鄰演算法)機器學習演算法KNN
- 機器學習演算法(三):K近鄰(k-nearest neighbors)初探機器學習演算法REST
- 機器學習實戰筆記-k近鄰演算法機器學習筆記演算法
- K-近鄰演算法介紹與程式碼實現演算法
- 機器學習——KNN(K近鄰)機器學習KNN
- K近鄰演算法:機器學習萌新必學演算法演算法機器學習
- 機器學習實戰----k值近鄰演算法(Python語言)機器學習演算法Python
- k-鄰近演算法實現約會網站的配對效果演算法網站
- Python反反爬系列(一)----K近鄰演算法與CSS動態字型加密Python演算法CSS加密
- 用定租問題學透機器學習的K近鄰演算法機器學習演算法
- 機器學習——KNN近鄰演算法機器學習KNN演算法
- 機器學習_K近鄰Python程式碼詳解機器學習Python
- 影像重取樣演算法之最鄰近插值演算法演算法
- 一看就懂的K近鄰演算法(KNN),K-D樹,並實現手寫數字識別!演算法KNN
- 【機器學習】機器學習建立演算法第2篇:K-近鄰演算法【附程式碼文件】機器學習演算法
- 機器學習經典分類演算法 —— k-近鄰演算法(附python實現程式碼及資料集)機器學習演算法Python
- 機器學習實戰2.1. 超詳細的k-近鄰演算法KNN(附Python程式碼)機器學習演算法KNNPython
- 送你一份使用k近鄰演算法實現迴歸的實用指南(附程式碼、連結)演算法
- 機器學習 第4篇:sklearn 最鄰近演算法概述機器學習演算法
- 圖說十大資料探勘演算法(一)K最近鄰演算法大資料演算法
- 【系統設計】鄰近服務
- 什麼是機器學習分類演算法?【K-近鄰演算法(KNN)、交叉驗證、樸素貝葉斯演算法、決策樹、隨機森林】機器學習演算法KNN隨機森林
- 什麼是機器學習的分類演算法?【K-近鄰演算法(KNN)、交叉驗證、樸素貝葉斯演算法、決策樹、隨機森林】機器學習演算法KNN隨機森林
- K-最近鄰法(KNN)簡介KNN
- 機器學習演算法-K近鄰(KNN)演算法(三):馬絞痛資料--kNN資料預處理+kNN分類pipeline(程式碼附詳細註釋)機器學習演算法KNN
- 【火爐煉AI】機器學習026-股票資料聚類分析-近鄰傳播演算法AI機器學習聚類演算法
- abc253E 相鄰元素之差不低於K的序列數
- 圖的鄰接表演算法---(附完整程式碼)演算法