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

问题描述

我想使用 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:目标是多标签指标,但average='binary'。请选择另一个平均设置,[无、'微'、'宏观'、'加权'、'样本'] 之一。

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 操作获得的召回值是否正确?

解决方法

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