web-dev-qa-db-fra.com

Erreur quadratique moyenne dans Numpy?

Existe-t-il une méthode numérique permettant de calculer l'erreur quadratique moyenne entre deux matrices?

J'ai essayé de chercher mais n'en ai trouvé aucun. Est-ce sous un nom différent?

S'il n'y en a pas, comment surmontez-vous cela? Est-ce que vous écrivez vous-même ou utilisez une autre bibliothèque?

56

Vous pouvez utiliser:

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

Ou

mse = (np.square(A - B)).mean(axis=ax)
  • avec ax=0 la moyenne est effectuée le long de la ligne, pour chaque colonne, renvoyant un tableau
  • avec ax=1 la moyenne est effectuée le long de la colonne, pour chaque ligne, renvoyant un tableau
  • avec ax=None la moyenne est effectuée élément par élément le long du tableau, renvoyant une valeur scalaire
71

Cela ne fait pas partie de numpy, mais cela fonctionnera avec numpy.ndarray objets. UNE numpy.matrix peut être converti en un numpy.ndarray et un numpy.ndarray peut être converti en un numpy.matrix.

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

Voir Scikit Learn mean_squared_error pour obtenir de la documentation sur la façon de contrôler les axes.

26

Encore plus numpy

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

Une autre alternative à la réponse acceptée qui évite tout problème avec la multiplication de matrice:

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

Dans les documents pour np.square: "Renvoie le carré élément par élément de l'entrée."

4
nickandross