筆記 KNN之網格搜尋與k近鄰演算法中更多超引數

2022-06-07 05:18:14 字數 2011 閱讀 1008

前筆記中使用的for迴圈進行的網格搜尋的方式,我們可以發現不同的超引數之間是存在一種依賴關係的,像是p這個超引數,只有在 weights="uniform"才有意義

在sklearn中有一種封裝好的網格搜尋,grid search

我們首先設定乙個陣列,其內容可以當成字典來看待

對於第一組引數而言

'weights':["uniform"],

'n_nrightbors':[i for i in range (1,11)]

對於第二組引數而言

'weights':['distance'],

'n_neightbors':[i for i in range(1,11)],

'p': [i for i in range (1,6)]

這樣我們就定義好了我們需要的引數的集合,我們也不難發現,超引數的依賴被我們通過這個集合中放在同乙個字典中,來表示這種依賴關係

先建立出乙個預設的不傳任何引數的kneighborsclassifier(),然後我們建立出乙個knn_clf,通過呼叫sklearn中的網格搜尋方法

from sklearn.model_selection import gridsearchcv
待載入進來之後,再建立乙個對應的例項物件,其中我們需要傳入兩個引數

grid_search = gridsearchcv(knn_clf, param_grid)
然後我們就要基於訓練資料集來嘗試的尋找最佳的模型(fit操作)

使用grid_search.best_estimator_即可檢視到最佳的模型所對應的引數

與之前結果不一樣的原因是因為網格搜尋的方式更加的複雜,還有交叉驗證的方式參與其中,準確度更高

其他的情況還有

我們要想拿到最佳引數對應的分類器可以直接

knn_clf = grid_search.best_estimator_
這樣我們就可以直接使用knn_clf來進行**了

結果:

knn_clf.predict(x_test)
準確率:

knn_clf.score(x_test, y_test)
n_jobs引數在並行處理的時候,是可以給你的計算機來分配幾個核來處理,預設為1,可以直接傳入-1,代表直接將全部的核心都用於操作

verbose引數

這是乙個輸出引數,可以在你執行的情況下進行輸出執行的情況,其可以傳入乙個整數,值越大,資訊越詳細

事實上,knn還有更多的超引數

比如更多的距離定義

●向量空間余弦相似度cosine similarity

●調整余弦相似度adjusted cosine similarity

●皮爾森相關係數pearson correlation coefficient

●jaccard相似係數jaccard coefficient

我們可以修改metric來更改對距離的定義,其預設的是明科夫斯基距離

MachineLearning 之 K 近鄰演算法

topic knn 演算法原理 常用距離演算法 決策規則 kd 樹 什麼是最近鄰演算法 nn 最近鄰演算法 nearest neighbor,簡稱 nn 其針對未知類別資料 x x 找到與其距離最近的資料 y role presentation yy,將 x x 劃入 y role presenta...

學習筆記(一)k 近鄰演算法(KNN)

終於找到 機器學習實戰 這本書了,在此記錄一些總結,便於回顧。knn的工作原理是 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中...

機器學習之 K近鄰演算法(KNN)

k近鄰演算法是機器學習中的最基礎的演算法之一,也是必須會講解的演算法之一。因為其簡單,易懂。但是k近鄰演算法在實際應用中卻很少使用到,由於其侷限性很強,執行效率低下。那麼所謂的k近鄰中的近鄰是指 已有乙個訓練資料集,現給定乙個新的資料,利用現有資料集對其進行 那麼 方法便是尋找與給定資料距離最近的k...