Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 交叉验证精度、召回率和f1以及sklearn_Python_Scikit Learn - Fatal编程技术网

Python 交叉验证精度、召回率和f1以及sklearn

Python 交叉验证精度、召回率和f1以及sklearn,python,scikit-learn,Python,Scikit Learn,有没有简单的方法可以交叉验证分类器,并立即计算精度和召回率?目前我正在使用这个函数 cross_validation.cross_val_score(classifier, designMatrix, classes, cv=5, scoring="precision") 但是它只计算一个指标,所以我不得不调用它两次来计算精度和召回率。对于大型ML模型,计算不必要地花费了2倍的时间。是否有更好的内置选项,或者我必须自己实现交叉验证?谢谢。我不确定当前的情况(这个功能已经讨论过了),但是你总是可

有没有简单的方法可以交叉验证分类器,并立即计算精度和召回率?目前我正在使用这个函数

cross_validation.cross_val_score(classifier, designMatrix, classes, cv=5, scoring="precision")

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

我不确定当前的情况(这个功能已经讨论过了),但是你总是可以通过下面的-糟糕的-黑客攻击逃脱

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)
然后在交叉验证中使用
scoring=scorer
。您应该在
recall\u累加器
数组中找到调用值。不过要注意,此数组是全局数组,因此请确保不要以无法解释结果的方式写入它。

cross\u val\u score()
的参数n\u job设置为1时,Eikenberg的答案有效。为了支持并行计算(n_jobs>1),必须使用共享列表而不是全局列表。这可以在多处理模块的Manager类的帮助下完成

然后,每次折叠的结果将存储在
调用\u累加器中

,这一点也将在上讨论。很明显,有一个关于这个问题的讨论即将开始。
from sklearn.metrics import precision_recall_fscore_support
from sklearn.metrics.scorer import make_scorer
from multiprocessing import Manager

recall_accumulator = Manager().list()
def score_func(y_true, y_pred, **kwargs):
    recall_accumulator.append(precision_recall_fscore_support(y_true, y_pred))
    return 0
scorer = make_scorer(score_func)