Numpy的平均误差?

The*_*eer 62 python arrays numpy mean mean-square-error

是否存在numpy中用于计算两个矩阵之间的均方误差的方法?

我试过搜索但没找到.它的名字不同吗?

如果没有,你怎么克服这个?你自己写的还是使用不同的lib?

Sau*_*tro 76

您可以使用:

mse = ((A - B)**2).mean(axis=ax)
Run Code Online (Sandbox Code Playgroud)

要么

mse = (np.square(A - B)).mean(axis=ax)
Run Code Online (Sandbox Code Playgroud)
  • ax=0平均值沿着行进行的,对于每一列,返回一个数组
  • ax=1平均值沿着列进行的,对于每一行,返回一个数组
  • ax=None平均值沿着阵列进行逐元素,返回一个标量值

  • @renatov也许你误解了我,使用`np.ndarray`会为`a**2'做一个元素乘法运算,但使用`np.matrixlib.defmatrix.matrix`将为'a*做一个矩阵乘法*2` ... (6认同)
  • `np.nanmean(((A - B)**2))`如果缺少值 (3认同)
  • 如果我错了,请更正,但我认为如果你这样做(MatrixA - MatrixB)**2它将尝试执行矩阵乘法,这与每个元素单独的平方不同.如果您尝试将以下公式与非方形矩阵一起使用,则会引发ValueError. (2认同)
  • 对不起,我误解了你.我以为你在使用numpy.matrix. (2认同)

Cha*_*ski 27

这不是其中的一部分numpy,但它可以与numpy.ndarray对象一起使用.A numpy.matrix可以转换为a numpy.ndarray和a numpy.ndarray可以转换为a numpy.matrix.

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(A, B)
Run Code Online (Sandbox Code Playgroud)

有关如何控制轴的文档,请参阅Scikit了解mean_squared_error.


Mar*_*rom 17

更加笨拙

np.square(np.subtract(A, B)).mean()
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,这种方式相当于 Sci-kitLearn 功能,很好! (3认同)

小智 5

已接受答案的另一种替代方法,可避免矩阵乘法的任何问题:

 def MSE(Y, YH):
     return np.square(Y - YH).mean()
Run Code Online (Sandbox Code Playgroud)

文件np.square

Return the element-wise square of the input.
Run Code Online (Sandbox Code Playgroud)


dcn*_*uro 5

只是为了踢

mse = (np.linalg.norm(A-B)**2)/len(A)
Run Code Online (Sandbox Code Playgroud)