95

numpy中是否有计算两个矩阵之间的均方误差的方法?

我试过搜索但没有找到。它是在不同的名称下吗?

如果没有,你如何克服这个?您是自己编写还是使用不同的库?

4

6 回答 6

129

您可以使用:

mse = ((A - B)**2).mean(axis=ax)

或者

mse = (np.square(A - B)).mean(axis=ax)
  • ax=0沿行执行平均,对于每一列,返回一个数组
  • ax=1沿列执行平均值,对于每一行,返回一个数组
  • ax=None平均值沿数组按元素执行,返回一个标量值
于 2013-08-04T20:54:36.623 回答
44

这不是 的一部分numpy,但它适用于numpy.ndarray对象。Anumpy.matrix可以转换为 anumpy.ndarray并且 anumpy.ndarray可以转换为 a numpy.matrix

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(A, B)

有关如何控制轴的文档,请参阅Scikit Learn mean_squared_error 。

于 2016-04-03T16:17:06.860 回答
29

更加麻木

np.square(np.subtract(A, B)).mean()
于 2017-11-19T08:11:39.097 回答
5

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

 def MSE(Y, YH):
     return np.square(Y - YH).mean()

文件np.square

Return the element-wise square of the input.
于 2017-08-31T16:04:06.447 回答
5

只为踢球

mse = (np.linalg.norm(A-B)**2)/len(A)
于 2020-06-16T06:26:40.773 回答
-1

计算均方误差(方差)及其平方根(标准差)的标准 numpy 方法是numpy.var()numpy.std(),请参见此处此处。它们适用于矩阵并具有与numpy.mean().

我想在这些功能可用之前可能已经发布了问题和前面的答案。

于 2020-10-12T09:58:25.810 回答