在Python中用二进制向量评估预测

1 投票
5 回答
629 浏览
提问于 2025-04-17 20:39

我想用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

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答