一、交叉驗證(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值 這種叫超引數。但是手動過程繁雜,...