Я работаю над проблемой множественной классификации с нейронной сетью в scikit-learn и пытаюсь выяснить, как я могу оптимизировать свои гиперпараметры (количество слоев, персептроны, другие вещи в конечном итоге).
Я обнаружил, что GridSearchCV
- это способ сделать это, но код, который я использую, возвращает мне среднюю точность, в то время как я на самом деле хочу протестировать счет F1. У кого-нибудь есть идеи о том, как я могу отредактировать этот код, чтобы он работал для счета F1?
Вначале, когда мне приходилось оценивать точность / точность, я думал, что этого было «достаточно», чтобы просто взять матрицу путаницы и сделать из нее вывод, в то время как методом проб и ошибок изменилось количество слоев и перцептронов. в моей нейронной сети снова и снова.
Сегодня я понял, что есть нечто большее: GridSearchCV
. Мне просто нужно выяснить, как я могу оценить оценку F1, потому что мне нужно провести исследование по определению точности нейронной сети с точки зрения слоев, узлов и, в конечном итоге, других альтернатив ...
mlp = MLPClassifier(max_iter=600)
clf = GridSearchCV(mlp, parameter_space, n_jobs= -1, cv = 3)
clf.fit(X_train, y_train.values.ravel())
parameter_space = {
'hidden_layer_sizes': [(1), (2), (3)],
}
print('Best parameters found:\n', clf.best_params_)
means = clf.cv_results_['mean_test_score']
stds = clf.cv_results_['std_test_score']
for mean, std, params in zip(means, stds, clf.cv_results_['params']):
print("%0.3f (+/-%0.03f) for %r" % (mean, std * 2, params))
выход:
Best parameters found:
{'hidden_layer_sizes': 3}
0.842 (+/-0.089) for {'hidden_layer_sizes': 1}
0.882 (+/-0.031) for {'hidden_layer_sizes': 2}
0.922 (+/-0.059) for {'hidden_layer_sizes': 3}
Так что здесь мой вывод дает мне среднюю точность (которую я нашел по умолчанию на GridSearchCV
). Как я могу изменить это, чтобы получить среднюю оценку F1 вместо точности?