我试图在log_loss
的{{1}}参数中使用scoring
参数来调整这个多类(6类)分类器。我不明白如何给它一个GridSearchCV
参数。即使我给它label
,它也会在交叉验证中的每次迭代中发生变化,所以我不明白如何给它sklearn.metrics.log_loss
参数?
我正在使用labels
和Python v3.6
如何将Scikit-Learn v0.18.1
与GridSearchCV
一起用于多级模型调整?
我的班级代表:
log_loss
我的代码:
1 31
2 18
3 28
4 19
5 17
6 22
Name: encoding, dtype: int64
这里是错误的尾部,完整的一个在https://pastebin.com/1CshpEBN:
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)
更新 只需使用它来根据@Grr
制作得分手ValueError: y_true contains only one label (1). Please provide the true labels explicitly through the labels argument.
答案 0 :(得分:3)
我的假设是,你的数据分割在y_true中只有一个类标签。虽然这似乎不太可能基于你发布的分布,我想这是可能的。虽然我似乎在data
](http://scikit-learn.org/stable/modules/generated/sklearn.metrics.log_loss.html)之前没遇到过这种情况,但如果标签全部相同,则会出现label参数。文档的这一部分的措辞也使得如果未传递[sklearn.metrics.log_loss
,该方法似乎会影响二进制分类。
现在正确地假设您应该将labels
作为log_loss
答案 1 :(得分:2)
你可以简单地指定" neg_log_loss_scorer" (或" log_loss_scorer")旧版本中将使用负日志丢失。