首页 > 解决方案 > sklearn 精确召回分数是否应该为 1D 和 2D 输入提供不同的输出?

问题描述

这似乎不是理想的行为,但我想检查一下。我认为它至少应该打印一个警告。

import numpy as np
import pdb
from sklearn.metrics import average_precision_score as ps

y = np.array([[1,0],[0,1],[1,0], [1,0],[1,0]])
hat = np.array([[0.2,0.8], [0.1,0.9], [0.8,0.2], [0,1], [0,1]])

print ps(y, hat)

print ps(y[:,0], hat[:,0])


#0.516666666667
#0.866666666667

标签: numpyscikit-learn

解决方案


这对我来说似乎并没有坏掉。您正在向函数提供不同的数据。唯一的区别是您要匹配的类的数量,而函数关心样本的数量。查看下面的代码。

import numpy as np
import pdb
from sklearn.metrics import average_precision_score as ps

y = np.array([[1,0],[0,1],[1,0], [1,0],[1,0]])
hat = np.array([[0.2,0.8], [0.1,0.9], [0.8,0.2], [0,1], [0,1]])

print y
print hat

print ps(y, hat)

print y[:,0]
print hat[:,0]

print ps(y[:,0], hat[:,0])

推荐阅读