我正在阅读sklearn中使用的指标,但我发现以下内容非常困惑:
在文档中,sklearn提供了如下用法示例:
import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)
0.5
据我所知,sklearns计算的指标如下:
我不确定这个过程,我很感激,如果有人能够逐步解释这个结果,因为我正在研究它,但我发现很难理解,为了了解更多,我尝试了以下案例:
import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0, 2, 1, 3,0]
y_true = [0, 1, 2, 3,0]
print(accuracy_score(y_true, y_pred))
0.6
我认为正确的计算如下:
但我不确定,我想看看是否有人可以支持我的计算,而不是复制和粘贴sklearn的文档。
我怀疑sumatory中的 i 是否与括号内的公式中的 i 相同,我不清楚,我不知道知道sumatory中元素的数量是否与样本中元素的数量有关,如果它还取决于类的数量。
答案 0 :(得分:4)
只有当参数中的变量相等时,指标函数才等于1,否则它的值为零。因此,当y等于yhat时,指示器函数产生一个计数作为正确的分类。 python中有一个代码示例,下面是数值示例。
import numpy as np
yhat=np.array([0,2,1,3])
y=np.array([0,1,2,3])
acc=np.mean(y==yhat)
print( acc)
答案 1 :(得分:4)
理解准确度计算的简单方法是:
给定两个列表y_pred和y_true,对于每个位置索引i,将y_pred的第i个元素与y_true的第i个元素进行比较,并执行以下计算:
所以使用你自己的例子:
y_pred = [0, 2, 1, 3, 0]
y_true = [0, 1, 2, 3, 0]
我们在索引0,3和4上看到匹配。因此:
number of matches = 3
number of samples = 5
最后,准确度计算:
accuracy = matches/samples
accuracy = 3/5
accuracy = 0.6
关于 i 索引的问题,它是样本索引,因此对于求和索引和Y / Yhat索引都是一样的。