Я пытаюсь решить проблему регрессии на Бостонском наборе данных с помощью случайного лесного регрессора . Я использовал GridSearchCV для выбора лучших гиперпараметров.
Задача 1
Должен ли я установить GridSearchCV
для некоторых X_train, y_train
и затем получить наилучшие параметры.
ИЛИ
Должен ли я установить его на 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
Я просто хочунекоторые указания о том, какие правильные шаги будут