Фитинги склеарн модель GridSearchCV - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь решить проблему регрессии на Бостонском наборе данных с помощью случайного лесного регрессора . Я использовал 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

Я просто хочунекоторые указания о том, какие правильные шаги будут

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Это действительно действительная проблема.

Задача 1

GridSearchCV действительно выполняет перекрестную проверку, чтобы найти правильный набор гиперпараметров.Но у вас все еще должен быть набор проверки, чтобы убедиться, что оптимальный набор параметров для него является правильным (так что он дает в конечном итоге наборы, тесты, наборы проверки).

Задача 2

GridSearchCV уже дает вам лучший оценщик, вам не нужно обучать новый.Но на самом деле CV - это просто проверка работоспособности здания, затем вы можете тренироваться по полному набору данных (подробное обсуждение см. https://stats.stackexchange.com/questions/11602/training-with-the-full-dataset-after-cross-validation).

Задача 3

То, что вы уже подтвердили, - это то, как вы обучили свою модель (то есть вы уже подтвердили, что найденные вами гиперпараметры являются надежными, и обучение работает, как и ожидалось, для ваших данных).

0 голосов
/ 23 ноября 2018

В общем, чтобы настроить гиперпараметры, вы всегда должны тренировать свою модель на X_train и использовать X_test для проверки результатов.Вы должны настроить параметры, основываясь на результатах, полученных X_test.

Вы никогда не должны настраивать гиперпараметры по всему набору данных, потому что это противоречит цели разделения теста / поезда (как вы правильно задаете в Задаче 3 ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...