gpt4 book ai didi

python - 如何在 Scikit-Learn (sklearn) 中将 `log_loss` 中的 `GridSearchCV` 与多类标签一起使用?

转载 作者:太空狗 更新时间:2023-10-30 02:39:48 31 4
gpt4 key购买 nike

我正在尝试使用 GridSearchCVscoring 参数中的 log_loss 参数来调整这个多类(6 类)分类器.我不明白如何给它一个 label 参数。即使我给它 sklearn.metrics.log_loss,它也会在交叉验证中的每次迭代中发生变化,所以我不明白如何给它 labels 参数?

我正在使用 Python v3.6Scikit-Learn v0.18.1

如何将 GridSearchCVlog_loss 一起用于多类模型调整?

我的类(class)代表:

1    31
2 18
3 28
4 19
5 17
6 22
Name: encoding, dtype: int64

我的代码:

param_test = {"criterion": ["friedman_mse", "mse", "mae"]}
gsearch_gbc = GridSearchCV(estimator = GradientBoostingClassifier(n_estimators=10),
param_grid = param_test, scoring="log_loss", n_jobs=1, iid=False, cv=cv_indices)
gsearch_gbc.fit(df_attr, Se_targets)

这是错误的结尾,完整的错误在这里 https://pastebin.com/1CshpEBN :

ValueError: y_true contains only one label (1). Please provide the true labels explicitly through the labels argument.

更新:就用这个来做基于@Grr 的得分手

log_loss_build = lambda y: metrics.make_scorer(metrics.log_loss, greater_is_better=False, needs_proba=True, labels=sorted(np.unique(y)))

最佳答案

我的假设是,不知何故,您的数据拆分在 y_true 中只有一个类标签。虽然根据您发布的发行版,这似乎不太可能,但我想这是可能的。虽然我之前没有遇到过这个问题,但在 [sklearn.metrics.log_loss]( http://scikit-learn.org/stable/modules/generated/sklearn.metrics.log_loss.html ) 中,如果标签都相同,则需要标签参数。如果未传递 labels,文档这一部分的措辞也让人觉得该方法似乎是在进行二元分类。

现在您正确地假设您应该将 log_loss 传递为 scorer=sklearn.metrics.log_loss(labels=your_labels)

关于python - 如何在 Scikit-Learn (sklearn) 中将 `log_loss` 中的 `GridSearchCV` 与多类标签一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43377189/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com