python 加入網格搜尋與交叉驗證的KNN演算法

2021-10-06 19:36:28 字數 1718 閱讀 1535

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from sklearn.preprocessing import standardscaler

from sklearn.neighbors import kneighborsclassifier

from sklearn.model_selection import gridsearchcv

defknn_iris_gscv()

:"""knn演算法對鳶尾花進行分類

加入網格搜尋k值與測試集交叉驗證"""

#資料集獲得

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.transform(x_test)

#knn演算法預估器

estimator = kneighborsclassifier(

)#加入網格搜尋與交叉驗證

#引數準備

param_dict =

#**k值

estimator = gridsearchcv(estimator, param_grid= param_dict ,cv=10)

estimator.fit(x_train,y_train)

#評估模型

#1.直接比對真實目標值與預估目標值

y_predict = estimator.predict(x_test)

print

("預估值:\n"

,y_predict)

print

(y_predict == y_test)

#真實目標值與預估值比對

#2.計算準確率

score = estimator.score(x_test,y_test)

print

("準確率:\n"

,score)

#最佳引數

print

("最佳引數:\n"

,estimator.best_params_)

# 最佳結果

print

("驗證集中的最佳結果:\n"

, estimator.best_score_)

# 最佳估計器

print

("估計器:\n"

, estimator.best_estimator_)

# 交叉驗證結果

print

("交叉驗證結果:\n"

, estimator.cv_results_)

if __name__ ==

'__main__'

:# knn_iris()

knn_iris_gscv(

)

結果如下:

交叉驗證與網格搜尋

交叉驗證與網格搜尋是機器學習中的兩個非常重要且基本的概念,但是這兩個概念在剛入門的時候並不是非常容易理解與掌握,自己開始學習的時候,對這兩個概念理解的並不到位,現在寫一篇關於交叉驗證與網格搜尋的文章,將這兩個基本的概念做一下梳理。網格搜尋 grid search 名字非常大氣,但是用簡答的話來說就是...

網格搜尋與交叉驗證

一.網格搜尋驗證 sklearn.model selection.gridsearchcv estimator,param grid,scoring none,fit params none,n jobs 1,iid true,refit true,cv none,verbose 0,pre dis...

網格搜尋和交叉驗證

在介紹網格搜尋和交叉驗證以前先要介紹下什麼是機器學習的超引數。我們常說的機器學習的引數指的是和特徵相關的係數,超引數指的是對於模型的整體規劃具有重要意義的指標 例如支援向量機中的乘法因子c 用於權衡經驗風險和模型複雜度 當支援向量機核函式是為徑向基rbf核函式,對應的鐘型函式的寬度gamma就是核函...