98 votes

Erreur quadratique moyenne dans Numpy ?

Existe-t-il une méthode en numpy pour calculer l'erreur quadratique moyenne entre deux matrices ?

J'ai essayé de chercher mais je n'ai rien trouvé. Est-il sous un autre nom ?

Si ce n'est pas le cas, comment surmonter cette difficulté ? L'écrivez-vous vous-même ou utilisez-vous une autre librairie ?

131voto

Saullo Castro Points 12260

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.

46voto

CharityAbbott Points 930

Cela ne fait pas partie de numpy mais il fonctionnera avec numpy.ndarray objets. A 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)

Véase Erreur quadratique moyenne de Scikit Learn pour obtenir de la documentation sur la façon de contrôler les axes.

30voto

Swards Points 3017

Encore plus de numpy

np.square(np.subtract(A, B)).mean()

7voto

dcneuro Points 27

Juste pour le plaisir

mse = (np.linalg.norm(A-B)**2)/len(A)

5voto

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

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

Desde el documents para np.square :

Return the element-wise square of the input.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X