在Python中用二进制向量评估预测
我想用Python对两个向量(预测值和实际值)进行简单的评估:(这两个向量都是ndarray类型)
prediction = [ 1 1 1 0 0 1 ]
actual = [ 1 0 1 0 1 0 ]
score = 1 + 0 + 1 + 1 + 0 + 0 / 6 = 3/6 = 50%
我试过用&&
运算符和numpy.mul
... 但总是需要进行一些转换。我希望能有一些非常简单的方法。
5 个回答
0
这段代码的意思是:我们在计算预测结果和实际结果之间的匹配程度。
具体来说,代码中的`prediction`是我们预测的结果,`actual`是实际的结果。我们用`for i in range(len(prediction))`这个部分来遍历每一个预测结果和实际结果。
`prediction[i] == actual[i]`这部分是在检查每一个预测是否和实际结果相同。如果相同,就返回`True`,如果不同,就返回`False`。
接着,`sum([...])`会把所有的`True`和`False`加起来。在Python中,`True`会被当作1来计算,`False`会被当作0。所以这个操作实际上是在统计预测正确的次数。
最后,我们用`/len(prediction)`来计算正确预测的比例,也就是把正确的次数除以总的预测次数,这样就得到了一个百分比,表示我们的预测有多准确。
1
import itertools
score = 100.0 * sum(1 for x,y in itertools.izip(prediction, actual) if x == y) / len(actual)
输出结果:
50.0
7
>>> import numpy as np
>>> prediction = np.array([1,1,1,0,0,1])
>>> actual = np.array([1,0,1,0,1,0])
>>> np.sum(prediction == actual, dtype=float) / len(prediction)
0.5
>>> np.mean(prediction == actual)
0.5
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。