KNN引數的篩選

2021-10-07 04:17:15 字數 1902 閱讀 7646

目錄導包

交叉驗證

演示交叉驗證

選取最適鄰居數

畫圖表示

多引數組合使用cross_val_score篩選最合適的引數組合

遍歷方式取最大值 結果

import numpy as np

from sklearn.neighbors import kneighborsclassifier

from sklearn import datasets

# model_selection:模型選擇

# cross_val_score cross:交叉,validation:驗證(測試)

# 交叉驗證

from sklearn.model_selection import cross_val_score

每次選取乙份資料做驗證,其餘資料作為訓練,通常選取所有資料,將資料求得的分數做平均值。

載入資料

x,y = datasets.load_iris(true)

x.shape

# 演示了交叉驗證,如何使用

knn = kneighborsclassifier()

score = cross_val_score(knn,x,y,scoring='accuracy',cv = 10)#預設cv=3,accuracy準確率

score.mean()

erros = 

for k in range(1,14):

knn = kneighborsclassifier(n_neighbors=k)

score = cross_val_score(knn,x,y,scoring='accuracy',cv = 6).mean()

# 誤差越小,說明k選擇越合適,越好

import matplotlib.pyplot as plt

%matplotlib inline

# k = 11時,誤差最小,說明k = 11對鳶尾花來說,最合適的k值

除此之外,knn中還有其他引數比如權重weights【uniform,distance】

np.array(list(result.values())).argmax()#找到最大值索引

list(result)[20]
由此可看,w最適為uniform,鄰居數最好為11。驗證其他引數也可以用同樣方法。

機器學習 調整kNN的超引數

1 問題 以knn演算法為例 平票 如果k個點中,不同型別的樣本數相等,怎麼選取?如果選取的k個點中,數量多的一類樣本點距離測試樣本較遠,數量少的一類樣本點距離測試樣本較近,此時選取數量較多的型別作為輸出結果,不具說服力 2 knn演算法中,除了k值外的另乙個超引數 距離的權重 1 距離 sciki...

深度學習(四) knn 超引數

best score 0.0 設定當前我們已經找到的準確率最好的值,初始化為0 bestk k 1 我們找到的最好的k,初始化為 1 for k in range 1,11 我們傳入10個k,看哪個k最適合鳶尾花 knn clf kneighborsclassifier n neighbors k ...

用交叉驗證調整KNN模型的引數

import pandas as pd import matplotlib.pyplot as plt import numpy as np 載入資料 def inspect data file root dataframe pd.read csv file root print 資料基本資訊 pr...