web-dev-qa-db-ja.com

Numpyの平均二乗誤差?

2つの行列間の平均二乗誤差を計算する方法はnumpyにありますか?

検索してみましたが、見つかりませんでした。別の名前ですか?

ない場合、どのようにこれを克服しますか?自分で作成するか、別のライブラリを使用しますか?

56

次を使用できます。

mse = ((A - B)**2).mean(axis=ax)

または

mse = (np.square(A - B)).mean(axis=ax)
  • ax=0を使用すると、列ごとに行に沿って平均が実行され、配列が返されます
  • ax=1を使用すると、列ごとに行ごとに平均が実行され、配列が返されます
  • ax=Noneを使用すると、配列に沿って要素ごとに平均が実行され、スカラー値が返されます
71

これはnumpyの一部ではありませんが、numpy.ndarrayオブジェクトで動作します。 numpy.matrixnumpy.ndarrayに変換でき、numpy.ndarraynumpy.matrixに変換できます。

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(A, B)

軸の制御方法のドキュメントについては、 Scikit Learn mean_squared_error を参照してください。

26

さらにもっと

np.square(np.subtract(A, B)).mean()
14
Mark Swardstrom

行列の乗算に関する問題を回避する、受け入れられた答えの別の代替案:

 def MSE(Y, YH):
     return np.square(Y - YH).mean()

np.squareのドキュメントから:「入力の要素単位の正方形を返します。」

4
nickandross