簡體   English   中英

適合sklearn GridSearchCV模型

[英]Fitting sklearn GridSearchCV model

我試圖在隨機森林回歸的幫助下解決波士頓數據集上的回歸問題。我使用GridSearchCV來選擇最佳超參數。

問題1

我應該在某些X_train, y_train上安裝GridSearchCV ,然后獲得最佳參數。

要么

我應該在X, y上擬合它以獲得最佳參數。(X,y =整個數據集)

問題2

說如果我在X, yX, y獲得最佳參數,然后在這些最佳參數上構建新模型。 現在我該如何訓練這個新模型?

我應該在X_train, y_train還是X, y.上訓練新模型X, y.

問題3

如果我在X,y上訓練新模型X,y那么我將如何驗證結果?

我的代碼到目前為止

   #Dataframes
    feature_cols = ['CRIM','ZN','INDUS','NOX','RM','AGE','DIS','TAX','PTRATIO','B','LSTAT']

    X = boston_data[feature_cols]
    y = boston_data['PRICE']

列車測試數據分割

from sklearn.cross_validation import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 1)

網格搜索以獲得最佳超參數

from sklearn.grid_search import GridSearchCV
param_grid = { 
    'n_estimators': [100, 500, 1000, 1500],
    'max_depth' : [4,5,6,7,8,9,10]
}

CV_rfc = GridSearchCV(estimator=RFReg, param_grid=param_grid, cv= 10)
CV_rfc.fit(X_train, y_train)

CV_rfc.best_params_ 
#{'max_depth': 10, 'n_estimators': 100}

在max_depth上訓練模型:10,n_estimators:100

RFReg = RandomForestRegressor(max_depth = 10, n_estimators = 100, random_state = 1)
RFReg.fit(X_train, y_train)
y_pred = RFReg.predict(X_test)
y_pred_train = RFReg.predict(X_train)

RMSE: 2.8139766730629394

我只是想要一些正確步驟的指導

這確實是一個有效的問題。

問題1

GridSearchCV確實進行了交叉驗證,以找到適當的超參數集。 但是你仍然應該有一個驗證集來確保最佳的參數集是合理的(所以在結束序列,測試,驗證集中給出)。

問題2

GridSearchCV已經為您提供了最佳估算器,您無需培訓新的估算器。 但實際上CV只是檢查建築物是否合理,然后您可以在完整的數據集上進行訓練(參見https://stats.stackexchange.com/questions/11602/training-with-the-full-dataset-after-cross -完整詳細討論的驗證)。

問題3

您已經驗證的是您訓練模型的方式(即您已經驗證了您找到的超參數是合理的,並且培訓的工作符合您所擁有的數據)。

通常,要調整超參數,您應該始終在X_train訓練模型,並使用X_test檢查結果。 您必須根據X_test獲得的結果調整參數。

您永遠不應該在整個數據集上調整超參數,因為它會破壞測試/火車拆分的目的(正如您在問題3中正確提出的那樣)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM