Есть ли в numpy метод вычисления среднеквадратичной ошибки между двумя матрицами?
Я пробовал искать, но ничего не нашел. Он под другим именем?
Если нет, то как вы преодолеваете это? Вы сами пишете или используете другую библиотеку?
Есть ли в numpy метод вычисления среднеквадратичной ошибки между двумя матрицами?
Я пробовал искать, но ничего не нашел. Он под другим именем?
Если нет, то как вы преодолеваете это? Вы сами пишете или используете другую библиотеку?
Ты можешь использовать:
mse = ((A - B)**2).mean(axis=ax)
Or
mse = (np.square(A - B)).mean(axis=ax)
ax=0
выполняется среднее по строке, для каждого столбца, возвращая массивax=1
выполняется среднее по столбцу, для каждой строки, возвращая массивax=None
среднее значение выполняется по элементам массива, возвращая скалярное значениеa = numpy.matrix([[5, 5], [5, 5]])
, а затем a ** 2
. Результатом является пустая матрица matrix([[50, 50], [50, 50]])
, которая показывает, что умножение пустой матрицы не будет поэлементным.
- person renatov; 19.04.2014
np.ndarray
будет выполнять поэлементное умножение для a**2
, но использование np.matrixlib.defmatrix.matrix
будет выполнять матричное умножение для a**2
...
- person Saullo G. P. Castro; 21.04.2014
Acmp = np.array(A, dtype=int)
)
- person Charles L.; 02.11.2015
np.nanmean(((A - B) ** 2))
если отсутствуют значения
- person user0; 04.12.2016
Это не часть 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, чтобы узнать, как управлять осью .
Еще более тупой
np.square(np.subtract(A, B)).mean()
Другая альтернатива принятому ответу, позволяющая избежать проблем с матричным умножением:
def MSE(Y, YH):
return np.square(Y - YH).mean()
Из документов для np.square
:
Return the element-wise square of the input.
Просто для удовольствия
mse = (np.linalg.norm(A-B)**2)/len(A)
Стандартные методы numpy для вычисления среднеквадратичной ошибки (дисперсии) и ее квадратного корня (стандартного отклонения) — numpy.var()
и numpy.std()
, см. здесь и здесь. Они применяются к матрицам и имеют тот же синтаксис, что и numpy.mean()
.
Я предполагаю, что вопрос и предыдущие ответы могли быть опубликованы до того, как эти функции стали доступны.
((A - B) ** 2).mean(axis=ax)
, гдеax=0
— для столбца,ax=1
— для строки, аax=None
— общая сумма. - person Fred Foo   schedule 27.05.2013