[英]Estimating accuracy with (x == y).mean() - How does it work?
请问该功能如何计算精度?
def accuracy_score(truth, pred):
if len(truth) == len(pred):
return "Predictions have an accuracy of {:.2f}%.".format((truth == pred).mean()*100)
else:
return "Number of predictions does not match number of outcomes!"
# Test the 'accuracy_score' function predictions = pd.Series(np.ones(5, dtype = int)) print accuracy_score(outcomes[:5], predictions)
我不知道为什么
(truth == pred).mean()
可以数任何数字,不是仅仅判断它是对还是错?
truth
是一组标签。 pred
是模型进行的一系列预测。 在理想的情况下, truth
必须等于pred
。 但是,实际上,模型的预测中会有误差。 因此,测量模型正确预测的数据点的准确性的概念。
假设这些是numpy数组,
truth == pred
返回True
和False
的布尔数组。 例如:
In [668]: x = np.array([1, 1, 2, 1])
In [669]: y = np.array([1, 2, 1, 1])
In [670]: x == y
Out[670]: array([ True, False, False, True], dtype=bool)
现在, .mean()
将计算True
的数量并除以总大小,从而得出精度:
In [671]: (x == y).mean()
Out[671]: 0.5
与以下内容相同:
In [672]: (x == y).sum() / len(x == y)
Out[672]: 0.5
和,
In [673]: (x == y).sum()
Out[673]: 2
布尔数组中True
值的数量。
我假设truth
和pred
是NumPy数组或子类-对于NumPy函数, True
和False
解释为1
或0
。
因此, mean
仅将truth
值等于pred
的出现次数相加,然后将其除以元素数。
例如:
>>> import numpy as np
>>> arr = np.array([True, False, True])
>>> arr.sum()
2
>>> arr.mean()
0.66666666666666663
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.