[英]Fitting sklearn GridSearchCV model
我試圖在隨機森林回歸的幫助下解決波士頓數據集上的回歸問題。我使用GridSearchCV來選擇最佳超參數。
問題1
我應該在某些X_train, y_train
上安裝GridSearchCV
,然后獲得最佳參數。
要么
我應該在X, y
上擬合它以獲得最佳參數。(X,y =整個數據集)
問題2
說如果我在X, y
上X, 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.