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

Scikit learn sklearn如何逐步计算准确度分数?,scikit-learn,Scikit Learn,我在阅读有关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 s

我在阅读有关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]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)
0.5

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

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的文档


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

指示器函数只有在其参数中的变量相等时才等于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)

理解精度计算的一个简单方法是:

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

accuracy = matches/samples
accuracy = 3/5
accuracy = 0.6
  • 计算匹配的数量
  • 除以样本数
  • 因此,使用您自己的示例:

    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指数都是一样的。

    谢谢你的支持,现在我清楚了结果。