将二维数组传递给 sklearn.metrics.recall_score 时,为啥会出现 ValueError?

Posted

技术标签:

【中文标题】将二维数组传递给 sklearn.metrics.recall_score 时,为啥会出现 ValueError?【英文标题】:Why do I get a ValueError, when passing 2D arrays to sklearn.metrics.recall_score?将二维数组传递给 sklearn.metrics.recall_score 时,为什么会出现 ValueError? 【发布时间】:2021-06-03 23:43:00 【问题描述】:

我想使用sklearn.metrics.recall_score 来评估二值图像分割任务的召回率。 这样做很有效:

threshold = 0.5
predicted_mask = (probability_map > threshold).astype(np.int)
actual_mask = actual_mask.astype(np.int)
result = recall_score(actual_mask.flatten(), predicted_mask.flatten())

但是:

result = recall_score(actual_mask, predicted_mask)

给我错误:

ValueError:目标是多标签指标,但平均值='二进制'。请选择另一个平均设置,[None, 'micro', 'macro', 'weighted', 'samples'] 之一。

actual_maskpredicted_mask 是整数 0 和 1 的 numpy 数组。

从documentation 对我来说,这不应该起作用:

sklearn.metrics.precision_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')

y_true:一维数组,或标签指示数组/稀疏矩阵

y_pred:一维数组,或标签指示数组/稀疏矩阵

我错过了什么?更重要的是:我使用flatten 操作获得的召回值是否正确?

【问题讨论】:

【参考方案1】:

sklearn.metrics.recall_score 中缺少 average 参数。您可以为您的用例传递“微”、“宏”、“加权”或“样本”。阅读提供的文档以了解不同值的说明。

【讨论】:

以上是关于将二维数组传递给 sklearn.metrics.recall_score 时,为啥会出现 ValueError?的主要内容,如果未能解决你的问题,请参考以下文章

将二维数组传递给另一个类 C++

如何将二维数组传递给函数[重复]

无法将二维字符数组传递给函数(C++)

将二维数组信息传递给 c# 中的方法

VBA:将二维数组传递给集合函数[重复]

将二维数组传递给 C++ 函数