sklearn dcg_score不符合预期运行报错,求排查解决方法
解决sklearn dcg_score单条目输入报错问题
问题重现
代码:
from sklearn.metrics import dcg_score import numpy as np true_relevance = np.asarray([[10]]) scores = np.asarray([[.1]]) dcg_score(true_relevance, scores)
运行时报错:
ValueError: Only ('multilabel-indicator', 'continuous-multioutput', 'multiclass-multioutput') formats are supported. Got binary instead
问题原因
sklearn的dcg_score默认会根据输入数组的形状推断任务类型:当每个样本仅包含1个相关性得分时,函数会误将其判定为二分类任务(binary格式),而非排序任务的相关性评估场景,因此触发格式不支持的错误。
解决方法
给dcg_score指定k=1参数,明确告知函数计算top-1条目的DCG,即可正确处理单条目输入:
from sklearn.metrics import dcg_score import numpy as np true_relevance = np.asarray([[10]]) scores = np.asarray([[.1]]) result = dcg_score(true_relevance, scores, k=1) print(result) # 输出:10.0
此时计算结果符合维基百科的DCG公式:DCG@1 = 10 / log2(1+1) = 10,与预期一致。
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

