Вопрос по настройке гиперпараметров с помощью scikit-learn GridSearchCV - PullRequest
0 голосов
/ 06 апреля 2020

Гарантирует ли выполнение поиска в сетке по гиперпараметрам улучшенную производительность при тестировании на одном и том же наборе данных?

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

classifier_os = LinearModel.LogisticRegression()

p_grid = {
    'C': np.logspace(-3, 3, 7)
}

clf = model_selection.GridSearchCV(classifier_os, p_grid, scoring='accuracy')
clf.fit(x_train, y_train)
y_pred = clf.predict(x_test)
metrics.classification_report(y_pred, y_test, output_dict=True)

Дает мне следующие оценки:

accuracy :  0.8218181818181818
 macro avg: 
     precision :  0.8210875331564986
     recall :  0.8213603058298822
     f1-score :  0.8212129655428624
     support :  275

По сравнению с предыдущей настройкой:

accuracy :  0.8290909090909091
 macro avg: 
     precision :  0.8287798408488063
     recall :  0.8285358354537744
     f1-score :  0.8286468069310212

Единственное, что изменилось в настройке, это сделать константа регуляризации 10 вместо значения по умолчанию 1

1 Ответ

0 голосов
/ 06 апреля 2020

GridSearhCV по умолчанию, если не указано, выполняет 5-кратное резюме и возвращает оценку. Иногда точность, возвращаемая как среднее значение, может не подходить, поэтому F1 - хороший выбор. Чтобы добавить, функция также выводит best_params, best_score. Вы должны использовать best_params, полученные в финальной модели, чтобы проверить, насколько хорошо она работает после настройки.

Ссылка:
Сетка Поиск Sklearn

...