sklearn精度召回分数是否应该为1D和2D输入提供不同的输出?

时间:2018-06-22 17:01:50

标签: numpy scikit-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 ps(y, hat)

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


#0.516666666667
#0.866666666667

1 个答案:

答案 0 :(得分:1)

这对我来说似乎没有问题。您正在将不同的数据输入到函数中。唯一的区别是您要匹配的类的数量,而该函数关心样本的数量。请查看下面的代码。

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])