问题描述
我想使用 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_mask
和 predicted_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 参数。您可以为您的用例传递“微观”、“宏观”、“加权”或“样本”。阅读提供的文档以了解不同值的解释。