from sklearn.metrics import precision_score
a = [ 1, 2, 1, 1, 2 ]
b = [ 1, 2, 2, 1, 1 ]
print precision_score(a,b, labels = [1])
# 0.6666
print precision_score(a,b, labels = [2])
# 0.5
print precision_score(a,b, labels = [1,2])
# 0.6666
为什么第一个和最后一个案例的值是相同的?在
手工计算,总精度应为3/5=0.6。但是第三种情况输出0.6666,正好是第一种情况的值。在
编辑1:将导入路径添加到有问题的函数。在
有关文档,请参阅此处(http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html#sklearn.metrics.precision_score)。我认为您需要将average参数更改为micro以获得指定标签的总体精度,即:
average的默认值是weighted,它计算指定标签上精度的加权平均值。如果使用micro,根据文档,它计算所有真阳性和假阳性的精度(大概all表示所有指定的标签,但文档对此并不清楚)。我想这就是你想要的?我无法检查这个,因为我不知道您使用的是哪个版本的scikit。在
您必须告诉
precision_score
它应该为哪个标签计算精度。您看到的是标签1
的精度:但您需要标签
^{pr2}$2
的精度:相关问题 更多 >
编程相关推荐