1. 程式人生 > >線性迴歸之最小二乘法舉例推導及python實現

線性迴歸之最小二乘法舉例推導及python實現

1 核心思想

通過最小化方差,使得擬合結果無限接近目標結果。

2 通過一元線性方程舉例說明

在這裡插入圖片描述
在這裡插入圖片描述

3 通過python實現一元線性擬合

import matplotlib.pyplot as plt
import random

# 用於儲存x,y擬合數據
x = []
y = []
# 資料個數
n = 10
# 隨機生成x,y
for i in range(n):
    x.append(random.randint(0, 9))
    y.append(random.randint(0, 9))
print(x, y)
# 根據推到出來的公式計算k,b
sum_xy = 0
sum_x = 0
sum_y = 0
sum_xx = 0
for i in range(n):
    sum_xy += x[i] * y[i]
    sum_x += x[i]
    sum_y += y[i]
    sum_xx += x[i] ** 2
print(sum_xy, sum_x, sum_y, sum_xx)
k = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x ** 2)
b = sum_y / n - k * sum_x / n
print(k, b)
# 根據x計算擬合的y值
new_y = []
for i in range(n):
    new_y.append(k * x[i] + b)
# 畫出原始資料點以及擬合好的直線
plt.title("Least squares")
plt.xlim(right=10, left=0)
plt.ylim(top=10, bottom=0)
plt.xlabel("x")
plt.ylabel("y")
plt.plot(x, new_y, color='black')
plt.scatter(x, y, color='red')
plt.show()

執行結果(因為資料時隨機生成的每次程式碼執行結果都會不同)
在這裡插入圖片描述