首页 > 解决方案 > 不知道如何打印最小二乘误差

问题描述

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

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-')

标签: pythonnumpyregressionleast-squares

解决方案


您已经绘制了线性回归的预测。因此,根据预测值,您可以计算“平方误差之和 (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它是一个数值更稳定的矩阵逆运算符。


推荐阅读