【问题标题】:how does sklearn compute the Accuracy score step by step?sklearn如何一步一步计算准确度分数?
【发布时间】:2016-06-06 19:47:11
【问题描述】:

我正在阅读 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 的文档。

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

【问题讨论】:

    标签: scikit-learn


    【解决方案1】:

    仅当参数中的变量相等时,指示函数才等于 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

    【讨论】:

      【解决方案2】:

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

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

      1. 统计匹配数
      2. 除以样本数

      所以用你自己的例子:

      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 索引都是相同的。

      【讨论】:

      • 感谢您的支持,我现在很清楚结果了。
      猜你喜欢
      • 2013-12-17
      • 1970-01-01
      • 2016-10-16
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 2017-05-18
      相关资源
      最近更新 更多