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

  统计/机器学习 模型验证 Python    浏览次数:9451        分享
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的数值。


SofaSofa数据科学社区DS面试题库 DS面经

高代兄   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)

SofaSofa数据科学社区DS面试题库 DS面经

派大星   2017-05-09 08:54

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


  相关讨论

sklearn计算MAPE

sklearn.model_selection.cross_val_predict怎么固定random_state?

sklearn无法加载kfold

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

sklearn cross_val_score中的参数pre_dispatch

sklearn GridSearchCV中的refit是什么意思

怎么自定义sklearn GridSearchCV中评估函数的阈值

关于sklearn.model_selection.PredefinedSplit的用法

sklearn classification_report里的support是什么意思

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

  随便看看

什么是混淆矩阵(confusion matrix)

PCA降维之前为什么要先标准化?

分类变量,进行One hot编码,维度升高,如何处理?

把tf.Tensor转换为numpy array

怎么理解推荐系统中的NDCG?