2016-06-06 35 views
0

我正在讀有關sklearn中使用的指標,但我覺得很困惑以下: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是一樣的括號裏面的公式,它是我不清楚,我不知道是否在sumatory元素的數量與樣本中元素的數量相關,如果它也取決於類的數量。

回答

1

一種簡單的方式來理解的準確性的計算公式是:

給定兩個列表,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 

併爲您對指數的問題,它是樣本指數,因此兩者的總和指數和同Y/Yhat指數。

+0

感謝您的支持,現在對我來說很清楚結果。 – neo33

1

僅當參數中的變量相等時指示符函數等於1,否則其值爲零。因此,當y等於指示函數產生一個計數作爲正確的分類時。在下面的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