¿Existe un método en numpy para calcular el error cuadrático medio entre dos matrices?
Intenté buscar pero no encontré ninguno. ¿Tiene un nombre diferente?
Si no lo hay, ¿cómo se supera? ¿Lo escribe usted mismo o usa una biblioteca diferente?
¿Existe un método en numpy para calcular el error cuadrático medio entre dos matrices?
Intenté buscar pero no encontré ninguno. ¿Tiene un nombre diferente?
Si no lo hay, ¿cómo se supera? ¿Lo escribe usted mismo o usa una biblioteca diferente?
Respuestas:
Puedes usar:
mse = ((A - B)**2).mean(axis=ax)
O
mse = (np.square(A - B)).mean(axis=ax)
ax=0
el promedio se realiza a lo largo de la fila, para cada columna, devolviendo una matrizax=1
el promedio se realiza a lo largo de la columna, para cada fila, devolviendo una matrizax=None
el promedio se realiza por elementos a lo largo de la matriz, devolviendo un valor escalarnp.ndarray
hará una multiplicación de elementos para a**2
, pero np.matrixlib.defmatrix.matrix
usará hará una multiplicación de matrices para a**2
...
Acmp = np.array(A, dtype=int)
)
np.nanmean(((A - B) ** 2))
si faltan valores
Esto no es parte de numpy
, pero funcionará con numpy.ndarray
objetos. A numpy.matrix
se puede convertir en un numpy.ndarray
y una numpy.ndarray
se puede convertir en una numpy.matrix
.
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(A, B)
Consulte Scikit Learn mean_squared_error para obtener documentación sobre cómo controlar el eje.
Aún más numpy
np.square(np.subtract(A, B)).mean()
Otra alternativa a la respuesta aceptada que evita cualquier problema con la multiplicación de matrices:
def MSE(Y, YH):
return np.square(Y - YH).mean()
De los documentos para np.square : "Devuelve el cuadrado de elementos de la entrada".
Los métodos numéricos estándar para calcular el error cuadrático medio (varianza) y su raíz cuadrada (desviación estándar) son numpy.var()
y numpy.std()
, consulte aquí y aquí . Se aplican a matrices y tienen la misma sintaxis que numpy.mean()
.
Supongo que la pregunta y las respuestas anteriores podrían haberse publicado antes de que estas funciones estuvieran disponibles.
((A - B) ** 2).mean(axis=ax)
, dondeax=0
es por columna,ax=1
es por fila yax=None
da un total general.