模型選擇與調優(KNN)

2021-09-26 04:20:20 字數 2122 閱讀 5620

一、交叉驗證(cross validation)

將拿到的訓練資料,分為訓練和驗證集。以下圖為例:將資料分成4份,其中乙份作為驗證集。然後經過4次(組)的測試,每次都更換不同的驗證集。即得到4組模型的結果,取平均值作為最終結果。又稱4折交叉驗證。

二、超引數搜尋-網格搜尋

通常情況下,有很多引數是需要手動指定的(如k-近鄰演算法中的k值), 這種叫超引數。但是手動過程繁雜,所以需要對模型預設幾種超引數組合。每組超引數都採用交叉驗證來進行評估。最後選出最優引數組合建立模型。

k值k=3

k=5k=7

模型模型1

模型2模型3

三、模型選擇與調優api

四、對前文中的鳶尾花例項進行選擇調優

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()

:# 1)獲取資料

iris = load_iris(

)# 2) 劃分資料集

x_train, x_test, y_train, y_test=train_test_split(iris.data, iris.target,random_state=6)

# 3) 特徵工程:標準化

transfer = standardscaler(

) x_train = transfer.fit_transform(x_train)

x_test = transfer.transform(x_test)

# 4) knn演算法預估流程

estimator = kneighborsclassifier(

)# 5) 網格搜尋與交叉驗證

garam_data=

estimator=gridsearchcv(estimator,garam_data,cv=10)

estimator.fit(x_train,y_train)

# 6) 模型評估

#方法1 直接比對 真實值和**值

y_predict = estimator.predict(x_test)

print

("y_predict:\n"

, y_predict)

print

("直接比對 真實值和**值:\n"

, y_test==y_predict)

#方法2 計算準確率

score = estimator.score(x_test,y_test)

print

("準確率:\n"

,score)

#最佳引數

print

("最佳引數:"

,estimator.best_params_)

#最佳結果

print

("最佳結果:"

,estimator.best_score_)

#最佳估計器

print

("最佳估計器:"

,estimator.best_estimator_)

#交叉驗證結果

print

("交叉驗證結果:"

模型選擇與調優 My way of ML9

目的 為了讓被評估的模型更加準確可信,是一種驗證方法 步驟 所有資料分成n等分,第乙份作為測試集,其他作為驗證集 二。所有模型的準確率求平均值 目的 選擇引數 通常很多需要手動指定的引數都是超引數,所謂超引數就是能對演算法效果產生很大影響的引數。但是手動選擇引數過程很複雜,我們交給計算機來做。設定幾...

機器學習之模型選擇與調優

交叉驗證 將拿到的訓練資料,分為訓練和驗證集。以下圖為例 將資料分成5份,其中乙份作為驗證集。然後經過5次 組 的測試,每次都更換不同的驗證集。即得到5組模型的結果,取平均值作為最終結果。又稱5折交叉驗證。五折交叉驗證,就是分成5份,三份訓練,乙份驗證,乙份測試 我們之前知道資料分為訓練集和測試集,...

機器學習之模型的選擇與調優

交叉驗證 將拿到的資料,分為訓練和驗證集。以下圖為例 將資料分成4份,其中乙份作為驗證集。然後經過4次 組 的測試,每次都更換不同的驗證集。即得到4組模型的結果,取平均值作為最終結果。又稱4折交叉驗證。通常情況下,有很多引數是需要手動指定的 如k 近鄰演算法中的k值 這種叫超引數。但是手動過程繁雜,...