小编Jon*_*nas的帖子

如何使用 scikit-learn 在分类问题中为 F1-score 做 GridSearchCV?

我正在研究 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))

Run Code Online (Sandbox Code Playgroud)

输出:

Best parameters found:
 {'hidden_layer_sizes': 3}
0.842 (+/-0.089) for {'hidden_layer_sizes': 1}
0.882 (+/-0.031) …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network multilabel-classification hyperparameters

6
推荐指数
1
解决办法
5339
查看次数