交叉验证精度,召回和f1以及sklearn

ami*_*mik 8 python scikit-learn

是否有任何简单的方法来交叉验证分类器并立即计算精度和召回?目前我使用的功能

cross_validation.cross_val_score(classifier, designMatrix, classes, cv=5, scoring="precision")
Run Code Online (Sandbox Code Playgroud)

但它只计算一个度量,所以我必须调用它2次来计算精度和召回率.对于大型ML模型,计算不必要地花费2倍的时间.有没有内置更好的选项,还是我必须自己实现交叉验证?谢谢.

eic*_*erg 1

我不确定目前的情况(这个功能已经被讨论过),但你总是可以摆脱以下 - 糟糕 - hack

from sklearn.metrics import recall_score, precision_score
from sklearn.metrics.scorer import make_scorer
recall_accumulator = []
def score_func(y_true, y_pred, **kwargs):
    recall_accumulator.append(recall_score(y_true, y_pred, **kwargs))
    return precision_score(y_true, y_pred, **kwargs)
scorer = make_scorer(score_func)
Run Code Online (Sandbox Code Playgroud)

scoring=scorer然后在交叉验证中使用。您应该在数组中找到召回值recall_accumulator。但请注意,该数组是全局的,因此请确保不要以无法解释结果的方式写入它。