【发布时间】:2019-04-26 05:20:27
【问题描述】:
我正在尝试在random forest regressor 的帮助下解决Boston Dataset 上的回归问题。我使用GridSearchCV 来选择最佳超参数。
问题 1
我是否应该在一些X_train, y_train 上拟合GridSearchCV,然后获得最佳参数。
或
我应该把它放在X, y 上以获得最佳参数吗?(X,y = 整个数据集)
问题 2
说如果我把它放在X, y 上并获得最佳参数,然后在这些最佳参数上建立一个新模型。
现在我应该如何训练这个新模型?
我应该在 X_train, y_train 或 X, y. 上训练新模型
问题 3
如果我在 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
我只是想要一些关于正确步骤的指导
【问题讨论】:
-
这是一个关于方法的问题,而不是编程问题,因此更适合Cross Validated(可以说这里是题外话)。
标签: python machine-learning scikit-learn random-forest grid-search