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

Numpy sklearn精确回忆分数是否应该为1D和2D输入提供不同的输出?,numpy,scikit-learn,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

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

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

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

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

它确实应该给出相同的输出,1-d数组在分类方面与2-d数组是等价的,但这不是计算的结果。如果你看,sklearn中AP的1D和2D输入是不同的。你对此的假设是错误的。撇开帽子不谈,你甚至在改变AP的y_真参数,当二维被假定为二进制标签指示符矩阵时,这与一维被当作二进制任务时非常不同。