¿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?
((A - B) ** 2).mean(axis=ax)
, dondeax=0
es por columna,ax=1
es por fila yax=None
da un total general.Respuestas:
Puedes usar:
mse = ((A - B)**2).mean(axis=ax)
O
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 escalarfuente
np.ndarray
hará una multiplicación de elementos paraa**2
, peronp.matrixlib.defmatrix.matrix
usará hará una multiplicación de matrices paraa**2
...Acmp = np.array(A, dtype=int)
)np.nanmean(((A - B) ** 2))
si faltan valoresEsto no es parte de
numpy
, pero funcionará connumpy.ndarray
objetos. Anumpy.matrix
se puede convertir en unnumpy.ndarray
y unanumpy.ndarray
se puede convertir en unanumpy.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.
fuente
Aún más numpy
fuente
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".
fuente
Sólo por diversión
mse = (np.linalg.norm (AB) ** 2) / len (A)
fuente
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()
ynumpy.std()
, consulte aquí y aquí . Se aplican a matrices y tienen la misma sintaxis quenumpy.mean()
.Supongo que la pregunta y las respuestas anteriores podrían haberse publicado antes de que estas funciones estuvieran disponibles.
fuente