Как правильно использовать GridSearchCV в сочетании с cross_val_score? - PullRequest
0 голосов
/ 26 июня 2018

В настоящее время у меня есть следующий код:

Я начинаю с разбиения набора данных на обучающие и тестовые наборы.Затем я запускаю GridSearchCV, чтобы попытаться найти оптимальные параметры.После того, как я нашел оптимальные параметры, я оцениваю классификатор с помощью параметра через cross_val_score.Это приемлемый способ пойти по этому поводу?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы можете указать параметр scoring внутри объекта GridSearchCV, используя make_scorer

from sklearn.metrics import precision_score, make_scorer
prec_metric = make_scorer(precision_score)
grid_search = GridSearchCV(estimator = logreg, scoring= prec_metric param_grid = param_grid, cv = 3, n_jobs=-1, verbose=3)

Как только вы укажете свои данные, вы можете использовать атрибут results_ для доступа к таким оценкам, как этот

results = grid_search.results_

{
'param_kernel': masked_array(data = ['poly', 'poly', 'rbf', 'rbf'],
                         mask = [False False False False]...)
'param_gamma': masked_array(data = [-- -- 0.1 0.2],
                        mask = [ True  True False False]...),
'param_degree': masked_array(data = [2.0 3.0 -- --],
                         mask = [False False  True  True]...),
 'split0_test_score'  : [0.8, 0.7, 0.8, 0.9],
 'split1_test_score'  : [0.82, 0.5, 0.7, 0.78],
 'mean_test_score'    : [0.81, 0.60, 0.75, 0.82],
 'std_test_score'     : [0.02, 0.01, 0.03, 0.03],
 'rank_test_score'    : [2, 4, 3, 1],
 'split0_train_score' : [0.8, 0.9, 0.7],
 'split1_train_score' : [0.82, 0.5, 0.7],
 'mean_train_score'   : [0.81, 0.7, 0.7],
 'std_train_score'    : [0.03, 0.03, 0.04],
 'mean_fit_time'      : [0.73, 0.63, 0.43, 0.49],
 'std_fit_time'       : [0.01, 0.02, 0.01, 0.01],
 'mean_score_time'    : [0.007, 0.06, 0.04, 0.04],
 'std_score_time'     : [0.001, 0.002, 0.003, 0.005],
 'params'             : [{'kernel': 'poly', 'degree': 2}, ...],
 }

Вы также можете использовать несколько метрик для оценки, как указано в этом примере .

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

Обновление : Исходя из этого ответа , вы должны затем передать classfier из grid_search, прежде чем встраивать все данные в cross_val_score, чтобы предотвратить любую утечку данных.

0 голосов
/ 26 июня 2018

Вам на самом деле не нужен cross_val_score

Проверьте ссылку, я думаю, что она вам поможет:

http://scikit -learn.org /стабильный / auto_examples / model_selection / plot_grid_search_digits.html

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