我在阅读有关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
Run Code Online (Sandbox Code Playgroud)
我了解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
Run Code Online (Sandbox Code Playgroud)
我认为正确的计算如下:
但是我不确定,我想看看是否有人可以支持我的计算,而不是复制并粘贴sklearn的文档。
我如果怀疑我在sumatory是一样的我括号里面的公式,它是我不清楚,我不知道元素在sumatory的数量与刚元素的数量在样本中是否还取决于类的数量。
小智 6
指标函数仅在其参数中的变量相等时才等于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)
Run Code Online (Sandbox Code Playgroud)
一种了解精度计算的简单方法是:
给定两个列表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]
Run Code Online (Sandbox Code Playgroud)
我们看到索引0、3和4匹配。因此:
number of matches = 3
number of samples = 5
Run Code Online (Sandbox Code Playgroud)
最后,精度计算:
accuracy = matches/samples
accuracy = 3/5
accuracy = 0.6
Run Code Online (Sandbox Code Playgroud)
对于有关i索引的问题,它是样本索引,因此求和索引和Y / Yhat索引都相同。
| 归档时间: |
|
| 查看次数: |
6238 次 |
| 最近记录: |