Я пытался понять склерн GridSearchCV .У меня было несколько основных вопросов об использовании перекрестной проверки в GridsearchCV и о том, как мне использовать рекомендации GridsearchCV далее
Скажите, что я объявляю экземпляр GridsearchCV следующим образом
from sklearn.grid_search import GridSearchCV
RFReg = RandomForestRegressor(random_state = 1)
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)
У меня были следующие вопросы:
Скажите, что в первой итерации n_estimators = 100
и max_depth = 4
выбран для построения модели. Теперь будет выбран score
для этой моделис помощью 10-кратной перекрестной проверки?
Этот процесс будет повторяться еще 9 раз, и каждый из этих 9 баллов будет добавлен к
score_list
, чтобы получить 10 баллов за все В итоге будет взято среднее значение из списка показателей, чтобы получить
final_score для модели с параметрами:
n_estimators = 100
и
max_depth = 4
б.Вышеупомянутый процесс будет повторяться со всеми другими возможными комбинациями n_estimators
и max_depth
, и каждый раз мы получим final_score для этой модели
c.Лучшей моделью будет модель, имеющая наибольшее значение final_score , и мы получим соответствующие наилучшие значения n_estimators и max_depth на CV_rfc.best_params_
Правильно ли мое понимание GridSearchCV
?
Теперь скажите, что я получаю лучшие параметры модели как
{'max_depth': 10, 'n_estimators': 100}
.Я объявляю интанс модели следующим образом:
RFReg_best = RandomForestRegressor(n_estimators = 100, max_depth = 10, random_state = 1)
Теперь у меня есть два варианта, какой из них правильный, это то, что я хотел знать
a,Используйте перекрестную проверку для всего набора данных, чтобы увидеть, насколько хорошо работает модель, как показано ниже
scores = cross_val_score(RFReg_best , X, y, cv = 10, scoring = 'mean_squared_error')
rm_score = -scores
rm_score = np.sqrt(rm_score)
b.Установите модель на X_train, y_train, а затем протестируйте на X_test, y_test
RFReg_best.fit(X_train, y_train)
y_pred = RFReg.predict(X_test)
rm_score = np.sqrt(mean_squared_error(y_test, y_pred))
Или они оба верны