sklearn cross_val_score怎么同时对多个scoring进行验证

  统计/机器学习 模型验证 Python    浏览次数: 717
3

我想同时验证两个scoring,但是cross_val_score好像一次只能设定一个。

我可以分别跑两次,

>>> cross_val_score(clf, X, y, scoring='log_loss')
>>> cross_val_score(clf, X, y, scoring='roc_auc')

但是太浪费时间了,我跑一次就需要3个小时,而且我的模型是一样的,只是想看这个模型在不同scoring下的分数。


有没有什么办法,能够实现类似

>>> cross_val_score(clf, X, y, scoring=[score1, score2, score3])

这样的功能?

 

道画师   2017-05-08 23:56



   2个回答 
6

cross_val_score是无法做到一次交叉验证,同时返回多个不同的loss的。sklearn也许以后会增加这种功能,但是目前看来,下一版本还不会。


目前可行的方案,是使用sklearn.model_selection.cross_val_predict

y_cv = cross_val_predict(clf, X, y)

roc_auc = metrics.roc_auc_score(y, y_cv)

logloss = metrics.log_loss(y, y_cv)

pr_auc = metrics.average_precision_score(y, y_cv)

... ...

这样的话,只需要做一次交叉训练,节约了时间。缺点就是无法知道每个fold的loss的数值。


高代兄   2017-05-09 10:28

高代兄懂真多! - DeGang   2017-05-10 11:16
-2

写个循环就搞定了

for my_score in [score1, score2, score3, score4]:

        print cross_val_score(clf, X, y, my_score)

派大星   2017-05-09 08:54

这个本质上并没有解决题主的问题吧。 - 蓝色北方   2017-05-09 08:55


  相关主题

sklearn GridSearchCV中的refit是什么意思   1回答

sklearn cross_val_score中的参数pre_dispatch   1回答

sklearn计算MAPE   1回答

调用sklearn中的classification_report,ValueError: Mix type of y not allowed, got types set(['binary', 'continuous'])   1回答

sklearn classification_report里的support是什么意思   1回答

sklearn里LogisticRegressionCV中的参量Cs什么意思   1回答

python sklearn模型中random_state参数的意义   2回答

sklearn的模型如何保存下来?   2回答

查看sklearn版本   1回答

sklearn实现adaboost算法了吗?   1回答

sklearn SGDClassifier的partial_fit是什么意思?   2回答

sklearn.linear_model.SGDClassifier中的参数n_iter设置问题   2回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!