2016-11-04 12 views
3

私は純粋なpythonで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 

で何が起こっているすべてのアイデアをしようとすると?私のpythonコードが正しいことを確かめてください。

答えて

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 

分割することによって除されたあなたの公平な評価を与え、サンプルのための第二のモーメントを計算する際に使用されます。母集団のこれらの同じモーメントを計算するとき、我々は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()/3)np.sqrt(ee.sum()/len(y_pred))

関連する問題