gpt4 book ai didi

python - 为什么 MSE sklearn 库给出的平方误差与 l2 范数平方误差不同?

转载 作者:行者123 更新时间:2023-11-30 09:36:49 29 4
gpt4 key购买 nike

我试图计算均方误差,如下所示:

enter image description here

在Python中。我看到了scipt/sklearn已经有一个实现了。然而,当我尝试将其与我自己的实现进行比较时,他们并不同意。这是为什么?我的实现只是使用范数 2(或不匹配的 Frobenius 范数),没有其他任何花哨的东西。

为了测试这一点,我编写了以下脚本:

import sklearn
from sklearn.decomposition import PCA
from sklearn.metrics import mean_squared_error
import numpy as np
from numpy import linalg as LA

X_truth = np.ones((5,6))
X_pred = 1.7*np.ones((5,6))

print 'LA error: ', (1.0/5)*LA.norm(X_truth - X_pred)**2
print 'LA error: ', (1.0/X_truth.shape[0])*LA.norm(X_truth - X_pred)**2
print 'LA error:: ', (1.0/5)*LA.norm(X_truth - X_pred, 'fro')**2
print 'LA error: ', LA.norm(X_truth - X_pred)**2
print 'LA error: ', LA.norm(X_truth - X_pred)
print 'LA error: ', (1.0/X_truth.shape[0])*LA.norm(X_truth - X_pred)
print 'sklearn MSE error: ', mean_squared_error(X_truth, X_pred)

我确实测试了我能想到的所有组合,但仍然无法让它们匹配。有什么想法吗?

最佳答案

所使用的公式有点不寻常,因为它不取平方和的平方根,而 LA.norm 却取平方根。

如果您仔细查看文档,您可以重新创建公式

np.sum((X_truth-X_pred)**2)/X_truth.size

给出 0.49 就像

mean_squared_error(X_truth, X_pred)

LA.norm(X_truth - X_pred)**2/X_truth.size

关于python - 为什么 MSE sklearn 库给出的平方误差与 l2 范数平方误差不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38795494/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com