繁体   English   中英

使用(x == y).mean()估算精度-如何工作?

[英]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

返回TrueFalse的布尔数组。 例如:

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值的数量。

我假设truthpred是NumPy数组或子类-对于NumPy函数, TrueFalse解释为10

因此, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM