Получение правильных результатов перекрестной проверки с помощью поиска по сетке и конвейеров в sklearn - PullRequest
0 голосов
/ 06 июня 2018

Мои настройки: я запускаю процесс (= конвейер), в котором я запускаю регрессию после выбора соответствующих переменных (после стандартизации данных - шаги, которые я пропустил, поскольку они в данном случае не имеют значения), которые я буду оптимизировать черезпоиск по сетке, как показано ниже

fold = StratifiedShuffleSplit(n_splits=10, test_size=0.2, random_state=777)
regression_estimator = LogisticRegression(penalty='l2', random_state=777, max_iter=10000, tol=10, solver='newton-cg')
pipeline_steps = [('feature_selection', SelectKBest(f_regression)), ('regression', regression_estimator)]

pipe = Pipeline(steps=pipeline_steps)

feature_selection_k_options = np.arange(1, 33, 3)

param_grid = {'feature_selection__k': feature_selection_k_options}

gs = GridSearchCV(pipe, param_grid=param_grid, scoring='recall', cv=fold)
gs.fit(X, y)

, поскольку по умолчанию refit=True в GridSearchCV я получаю best_estimator по умолчанию, и я в порядке.Что я упускаю, так это, учитывая этот best_estimator, то, как я получаю перекрестные проверенные оценки только на тех данных TEST, которые я предварительно разделил в процедуре.на самом деле, есть метод .score(X, Y), но, как диктуют документы (http://scikit -learn.org / stable / modules / generate / sklearn.linear_model.LogisticRegression.html # sklearn.linear_model.LogisticRegression.predict_proba ) "Возвращает среднюю точность для данных и ярлыков теста" , тогда как я хочу, чтобы это было сделано через cross_val_score (http://scikit -learn.org / stable / modules / generate / sklearn.model_selection.cross_val_score.html ).проблема в том, что эта процедура перезапускает все и сохраняет только те результаты (я хочу получить все количества, которые получаются из этого процесса).

По сути, я хочу вычесть из наилучшей оценки перекрестный проверенный балл по тестовым данным с выбранным мерилом (или уже выбранным в поиске по сетке) и уже с помощью алгоритма CrossValidated.встроенный в мой Pipeline (в данном случае StratifiedShuffleSplit)

знаете ли вы, как это сделать?

1 Ответ

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

Вы можете получить доступ к оценке перекрестной проверки с помощью атрибута cv_results_, который может быть удобно считан в панде.1005 * это пример, показывающий, как можно рассчитать несколько показателей одновременно в GridSearchCV.

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