无法弄清楚如何打印最小二乘错误

时间:2019-05-20 07:40:58

标签: python numpy regression least-squares

我写了一些代码,使用最小二乘的解析解找到了几个数据点的最佳拟合线。现在,我想打印实际数据和我的估算线之间的错误,但是我不知道如何计算它。这是我的代码:

import numpy as np
import matplotlib.pyplot as plt

A = np.array(((0,1),
             (1,1),
             (2,1),
             (3,1)))

b = np.array((1,2,0,3), ndmin = 2 ).T

xstar = np.matmul( np.matmul( np.linalg.inv( np.matmul(A.T, A) ), A.T), b)

print(xstar)

plt.scatter(A.T[0], b)
u = np.linspace(0,3,20)
plt.plot(u, u * xstar[0] + xstar[1], 'b-')

2 个答案:

答案 0 :(得分:2)

您已经绘制了线性回归的预测。因此,根据预测值,您可以计算出“平方误差和(SSE)”或“均方误差(MSE)”,如下所示:

y_prediction = u * xstar[0] + xstar[1]
SSE = np.sum(np.square(y_prediction - b))
MSE = np.mean(np.square(y_prediction - b))
print(SSE)
print(MSE)

旁注。您可能要使用np.linalg.pinv,因为它是数值上更稳定的矩阵逆运算符。

答案 1 :(得分:0)

请注意,numpy有一个函数,称为lstsq(即最小二乘),它返回残差和解,因此您不必自己实现它:

xstar, residuals = np.linalg.lstsq(A,b) MSE = np.mean(resuiduals) SSE = np.sum(residuals)

尝试!