2016-11-04 3 views
3

순수 파이썬에서 RMSE를 계산할 때 오류가 있다고 생각합니다. 아래는 코드입니다.Python 순수 RMSE 대 Sklearn

y_true = [3, -0.5, 2, 7] 
y_pred = [2.5, 0.0, 2, 8] 
e = abs(np.matrix(y_pred) - np.matrix(y_true)).A1 
ee = np.dot(e,e) 
np.sqrt(ee.sum()/3) 

This returns: 0.707 

그러나 나는 Sklearn

mean_squared_error(np.matrix(y_true),np.matrix(y_pred))**0.5 
This returns: 0.612 

에 무슨 일이 일어나고 있는지 어떤 생각을 할 때? 확실히 내 파이썬 코드가 맞는지 확인하십시오.

답변

6

오류가 아닙니다. 당신은 3로 나누어하고 있으며 sklearnn-1에 의해 4

y_true = [3, -0.5, 2, 7] 
y_pred = [2.5, 0.0, 2, 8] 
e = abs(np.matrix(y_pred) - np.matrix(y_true)).A1 
ee = np.dot(e,e) 
np.sqrt(ee.sum()/4) 

0.61237243569579447 

나누어 분할되어 당신에게 공정한 평가를 제공하고 샘플에 대한 2 차 모멘트를 계산할 때 사용됩니다. 모집단에 대해 같은 순간을 계산할 때 n으로 나눕니다. 여기 RMSE의 오른쪽 공식은 WikipediaSome other link

+0

왜 sklearn을 4로 나눕니까? – cloud36

+0

@ cloud36 : 내 대답 좀 봐 – MMF

2

관련이있을 수있는 링크가 있습니다 :

RMSE

또는 귀하의 경우, n=len(y_pred)=len(y_true)=4

. 올바른 결과를 얻으려면 다음을 변경하십시오. 을 np.sqrt(ee.sum()/len(y_pred))