RLS(最小二乘法)擬合直線

原理:

  定理原文鏈接: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()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章