前筆記中使用的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...