RLS(最小二乘法)拟合直线

mac2025-05-30  1

原理:

  定理原文链接:https://blog.csdn.net/shenziheng1/article/details/54409180

定理以及证明

实例代码:

我们在直线 y = 3 + 5x 附近生成服从正态分布的随机点,作为拟合直线的样本点:

import numpy as np import matplotlib.pyplot as plt #在直线附近生成随机的点 X = np.arange(0,5,0.1) Z = [3 + 5 * x for x in X] Y = [np.random.normal(z,0.5) for z in Z] plt.plot(X,Y,'ro') plt.show()

我们利用最小二乘法的正则方程组来求解未知系数 a0 与 a1:

def linear_regression(x,y): N = len(x) sumx = sum(x) sumy = sum(y) sumx2 = sum(x**2) sumxy = sum(x*y) A = np.mat([[N,sumx],[sumx,sumx2]]) b = np.array([sumy,sumxy]) return np.linalg.solve(A,b) a0,a1= linear_regression(X,Y) print a0,a1

#绘制直线

#绘制直线 _x = [0,5] _y = [a0+a1*x for x in _x] plt.plot(X,Y,'ro',_x,_y,'b',linewidth=2) plt.title("y={}+{}x".format(a0,a1)) plt.show()

 

最新回复(0)