Средняя квадратичная ошибка в Numpy?
Есть ли в numpy метод для вычисления среднеквадратичной ошибки между двумя матрицами?
Я пытался искать, но не нашел ни одного. Это под другим именем?
Если нет, как вы преодолеете это? Вы пишете это сами или используете другую библиотеку?
7 ответов
Ты можешь использовать:
mse = ((A - B)**2).mean(axis=ax)
Или же
mse = (np.square(A - B)).mean(axis=ax)
- с
ax=0
среднее значение выполняется по строке, для каждого столбца, возвращая массив - с
ax=1
среднее значение выполняется вдоль столбца, для каждой строки, возвращая массив - с
ax=None
среднее выполняется поэлементно по массиву, возвращая скалярное значение
Это не часть numpy
, но это будет работать с numpy.ndarray
объекты. numpy.matrix
может быть преобразован в numpy.ndarray
и numpy.ndarray
может быть преобразован в numpy.matrix
,
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(A, B)
См. Scikit Learn mean_squared_error для документации о том, как управлять осью.
Еще одна альтернатива принятому ответу, позволяющая избежать проблем с умножением матриц:
def MSE(Y, YH):
return np.square(Y - YH).mean()
Из документов для np.square: "Вернуть поэлементный квадрат ввода".
Стандартные методы numpy для вычисления среднеквадратичной ошибки (дисперсии) и ее квадратного корня (стандартное отклонение):
numpy.var()
и
numpy.std()
см. здесь и здесь. Они применяются к матрицам и имеют тот же синтаксис, что и
numpy.mean()
.
Я полагаю, что вопрос и предыдущие ответы могли быть опубликованы до того, как эти функции стали доступны.
Как насчет этого, чтобы держать сnp.operation
стиль?
mse = np.mean(np.square(A - B))
Просто имейте в виду, чтоnp.mean()
безaxis
указанный аргумент ключевого слова выведет скаляр, какnp.sum()
.