Случайная настройка леса с RandomizedSearchCV - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть несколько вопросов, касающихся рандомизированного поиска по сетке в модели регрессии случайных лесов.Моя сетка параметров выглядит следующим образом:

random_grid = {'bootstrap': [True, False],
               'max_depth': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, None],
               'max_features': ['auto', 'sqrt'],
               'min_samples_leaf': [1, 2, 4],
               'min_samples_split': [2, 5, 10],
               'n_estimators': [130, 180, 230]}

, а мой код для RandomizedSearchCV выглядит так:

# Use the random grid to search for best hyperparameters
# First create the base model to tune
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor()
# Random search of parameters, using 3 fold cross validation, 
# search across 100 different combinations, and use all available cores
rf_random = RandomizedSearchCV(estimator = rf, param_distributions = random_grid, n_iter = 100, cv = 3, verbose=2, random_state=42, n_jobs = -1)
# Fit the random search model
rf_random.fit(X_1, Y)

Есть ли способ рассчитать среднеквадратичный квадрат для каждого набора параметров?Это было бы более интересно для меня, как оценка R ^ 2?Если бы я сейчас хотел получить лучший набор параметров, как показано ниже, я бы также использовал самый низкий показатель RMSE.Есть ли способ сделать это?

rf_random.best_params_
rf_random.best_score_
rf_random.best_estimator_

спасибо, R

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Если вы хотите создать фрейм данных для результатов каждого резюме, используйте следующее.Установите return_train_score как True, если вам также нужны результаты для набора данных обучения.

rf_random = RandomizedSearchCV(estimator = rf, return_train_score = True)
import pandas as pd
df = pd.DataFrame(rf_random.cv_results_)
0 голосов
/ 14 декабря 2018

Добавьте параметр 'scoring' в RandomizedSearchCV.

RandomizedSearchCV(scoring="neg_mean_squared_error", ...

Альтернативные опции можно найти в документации

С этим вы можете напечатать RMSEдля каждого набора параметров вместе с набором параметров:

cv_results = rf_random.cv_results_
for mean_score, params in zip(cv_results["mean_test_score"], cvres["params"]):
    print(np.sqrt(-mean_score), params)
...