Извлечение результатов из gridsearchcv - PullRequest
0 голосов
/ 06 марта 2019

Я только что закончил CV по gridsearch по моделированию на основе дерева, и после просмотра результатов мне удалось получить доступ к результатам каждой итерации из gridsearchCV.

Мне нужно каждый запуск в отдельной строке и каждый параметр в отдельном столбце. Я могу запустить цикл или просмотр списка, чтобы запустить для каждой строки, но не могу разделить каждый цикл на столбцы

 df = grid.grid_scores_
 df[0]
 mean: 0.57114, std: 0.00907, params: {'criterion': 'gini', 'max_depth': 10, 
 'max_features': 8, 'min_samples_leaf': 2, 'min_samples_split': 2, 'splitter': 'best'}`

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

mean | std   | criterion | ..... | splitter
0.57   0.009    'gini'     ..... | 'best'
0.58   0.029    'entropy'     ..... | 'random'
.
.
.
.

1 Ответ

0 голосов
/ 06 марта 2019

Вы можете использовать готовый класс для генерации DataFrame с отчетом о параметрах (см. Сообщение stackoverflow с использованием этого кода здесь )

Импорт и настройки

import pandas as pd
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from gridsearchcv_helper import EstimatorSelectionHelper
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

Генерировать некоторые данные

iris = load_iris()
X_iris = iris.data
y_iris = iris.target

Определить модель и гиперпараметрическую сетку

models = {'RandomForestClassifier': RandomForestClassifier()}
params = {'RandomForestClassifier': { 'n_estimators': [16, 32],
                                      'max_features': ['auto', 'sqrt', 'log2'],
                                      'criterion' : ['gini', 'entropy'] }}

Выполнить gridsearch (с CV) и сообщить результаты

helper = EstimatorSelectionHelper(models, params)
helper.fit(X_iris, y_iris, n_jobs=4)
df_gridsearchcv_summary = helper.score_summary()

Вот вывод

print(type(df_gridsearchcv_summary))
print(df_gridsearchcv_summary.iloc[:,1:])

RandomForestClassifier
<class 'pandas.core.frame.DataFrame'>
   min_score mean_score max_score  std_score criterion max_features n_estimators
0   0.941176   0.973856         1  0.0244553      gini         auto           16
1   0.921569    0.96732         1  0.0333269      gini         auto           32
8   0.921569    0.96732         1  0.0333269   entropy         sqrt           16
10  0.921569    0.96732         1  0.0333269   entropy         log2           16
2   0.941176   0.966912  0.980392  0.0182045      gini         sqrt           16
3   0.941176   0.966912  0.980392  0.0182045      gini         sqrt           32
4   0.941176   0.966912  0.980392  0.0182045      gini         log2           16
5   0.901961   0.960784         1  0.0423578      gini         log2           32
6   0.921569   0.960376  0.980392  0.0274454   entropy         auto           16
7   0.921569   0.960376  0.980392  0.0274454   entropy         auto           32
11  0.901961    0.95384  0.980392  0.0366875   entropy         log2           32
9   0.921569   0.953431  0.980392  0.0242635   entropy         sqrt           32
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...