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近鄰演算法-KNN機器學習演算法KNN
- K近鄰模型模型
- 機器學習-11-k近鄰演算法機器學習演算法
- Python:K-近鄰演算法Python演算法
- 2.1 k鄰近演算法之二演算法
- 2.1 k鄰近演算法之一演算法
- 分類演算法-k 鄰近演算法演算法
- 機器學習演算法之K近鄰演算法機器學習演算法
- 機器學習演算法——kNN(k-近鄰演算法)機器學習演算法KNN
- 機器學習——KNN(K近鄰)機器學習KNN
- 機器學習實戰筆記-k近鄰演算法機器學習筆記演算法
- k近鄰演算法的實現:kd樹演算法
- 機器學習筆記1(K-近鄰演算法)機器學習筆記演算法
- K近鄰演算法:機器學習萌新必學演算法演算法機器學習
- 機器學習演算法(三):K近鄰(k-nearest neighbors)初探機器學習演算法REST
- 用Python實現K-近鄰演算法Python演算法
- k近鄰演算法python實現 -- 《機器學習實戰》演算法Python機器學習
- K近鄰法(KNN)原理小結KNN
- K-近鄰演算法介紹與程式碼實現演算法
- 機器學習實戰----k值近鄰演算法(Python語言)機器學習演算法Python
- 機器學習——KNN近鄰演算法機器學習KNN演算法
- 用定租問題學透機器學習的K近鄰演算法機器學習演算法
- 機器學習——最鄰近規則分類(K Nearest Neighbor)KNN演算法機器學習RESTKNN演算法
- 機器學習_K近鄰Python程式碼詳解機器學習Python
- k-鄰近演算法實現約會網站的配對效果演算法網站
- 【機器學習】機器學習建立演算法第2篇:K-近鄰演算法【附程式碼文件】機器學習演算法
- Python反反爬系列(一)----K近鄰演算法與CSS動態字型加密Python演算法CSS加密
- scikit-learn K近鄰法類庫使用小結
- 機器學習——最鄰近規則分類(K Nearest Neighbor)KNN演算法的應用機器學習RESTKNN演算法
- 機器學習 第4篇:sklearn 最鄰近演算法概述機器學習演算法
- 第一篇:K-近鄰分類演算法原理分析與程式碼實現演算法
- 2.2:示例,使用k鄰近演算法改進約會網站的配對效果 之一演算法網站
- opencv 學習之 基於K近鄰的數字識別OpenCV
- 統計學習筆記(3)——k近鄰法與kd樹筆記