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