将二维数组传递给 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_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
操作获得的召回值是否正确?
【问题讨论】:
【参考方案1】:sklearn.metrics.recall_score 中缺少 average 参数。您可以为您的用例传递“微”、“宏”、“加权”或“样本”。阅读提供的文档以了解不同值的说明。
【讨论】:
以上是关于将二维数组传递给 sklearn.metrics.recall_score 时,为啥会出现 ValueError?的主要内容,如果未能解决你的问题,请参考以下文章