Python 使用(x==y).mean()估计精度-它是如何工作的?
请问这个函数如何计算精度Python 使用(x==y).mean()估计精度-它是如何工作的?,python,arrays,pandas,numpy,dataframe,Python,Arrays,Pandas,Numpy,Dataframe,请问这个函数如何计算精度 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 outco
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()
可以数到任何数字,难道它不只是判断它是真是假吗?
真是一个标签数组pred
是模型的一组预测。在理想情况下,真值
必须等于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)
>>> import numpy as np
>>> arr = np.array([True, False, True])
>>> arr.sum()
2
>>> arr.mean()
0.66666666666666663
现在,.mean()
将计算True
的数量,然后除以总大小,给出准确度:
In [671]: (x == y).mean()
Out[671]: 0.5
这与:
In [672]: (x == y).sum() / len(x == y)
Out[672]: 0.5
以及
这是布尔数组中True
vals的数目。truth
是一个标签数组pred
是模型的一组预测。在理想情况下,真值
必须等于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)
>>> import numpy as np
>>> arr = np.array([True, False, True])
>>> arr.sum()
2
>>> arr.mean()
0.66666666666666663
现在,.mean()
将计算True
的数量,然后除以总大小,给出准确度:
In [671]: (x == y).mean()
Out[671]: 0.5
这与:
In [672]: (x == y).sum() / len(x == y)
Out[672]: 0.5
以及
这是布尔数组中True
vals的数目。我假设truth
和pred
是NumPy数组或子类,对于NumPy函数True
和False
被解释为1
或0
因此,mean
只是将truth
等于pred
的出现次数相加,然后除以元素数
例如:
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)
>>> import numpy as np
>>> arr = np.array([True, False, True])
>>> arr.sum()
2
>>> arr.mean()
0.66666666666666663
我假设truth
和pred
是NumPy数组或子类,对于NumPy函数True
和False
被解释为1
或0
因此,mean
只是将truth
等于pred
的出现次数相加,然后除以元素数
例如:
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)
>>> import numpy as np
>>> arr = np.array([True, False, True])
>>> arr.sum()
2
>>> arr.mean()
0.66666666666666663
不确定,但可能是将布尔值改为1和0的列表,然后得到这些值的平均值。看来truth
和pred
是两个numpy数组。如果是这种情况,truth==pred
将创建一个新数组,其中1
表示truth
和pred
中的对应值相等,反之亦然。然后,取所有这些的平均值,告诉你你的预测值/分类器有多准确,在平均数上,如果它有帮助的话,你可以。不确定,但可能是将布尔值改为1和0的列表,然后得到这些值的平均值。看起来真值
和预测值
是两个numpy数组。如果是这种情况,truth==pred
将创建一个新数组,其中1
表示truth
和pred
中的对应值相等,反之亦然。然后,取所有这些的平均值,告诉你你的预测/分类器有多准确,在平均数上,如果有帮助的话,你可以。