sklearn如何逐步计算准确度分数?

时间:2016-06-06 19:47:11

标签: scikit-learn

我正在阅读sklearn中使用的指标,但我发现以下内容非常困惑:

enter image description here

在文档中,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计算的指标如下:

enter image description here

我不确定这个过程,我很感激,如果有人能够逐步解释这个结果,因为我正在研究它,但我发现很难理解,为了了解更多,我尝试了以下案例:

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

我认为正确的计算如下:

enter image description here

但我不确定,我想看看是否有人可以支持我的计算,而不是复制和粘贴sklearn的文档。

我怀疑sumatory中的 i 是否与括号内的公式中的 i 相同,我不清楚,我不知道知道sumatory中元素的数量是否与样本中元素的数量有关,如果它还取决于类的数量。

2 个答案:

答案 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)

example

答案 1 :(得分:4)

理解准确度计算的简单方法是:

给定两个列表y_pred和y_true,对于每个位置索引i,将y_pred的第i个元素与y_true的第i个元素进行比较,并执行以下计算:

  1. 计算匹配数
  2. 除以样本数
  3. 所以使用你自己的例子:

    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索引都是一样的。