我想同时验证两个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])
这样的功能?
2个回答
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的数值。
写个循环就搞定了
for my_score in [score1, score2, score3, score4]:
print cross_val_score(clf, X, y, my_score)
相关主题
sklearn计算MAPE
1回答
关于sklearn.model_selection.PredefinedSplit的用法
1回答
sklearn.model_selection.cross_val_predict怎么固定random_state?
1回答
sklearn中除了sgd以外,还有什么可以使用partial_fit方法吗?
1回答
sklearn里LogisticRegressionCV中的参量Cs什么意思
1回答
查看sklearn版本
1回答
sklearn classification_report里的support是什么意思
1回答
sklearn训练classifier的时候报错Unknown label type
1回答
sklearn cross_val_score中的参数pre_dispatch
1回答
我们谢绝在回答前讲“生动”的故事。
我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。
我们谢绝答非所问。
我们谢绝自己不会、硬要回答。
我们感激每一个用户在编写答案时的努力与付出!