線性迴歸之最小二乘法舉例推導及python實現
阿新 • • 發佈:2018-11-25
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()
執行結果(因為資料時隨機生成的每次程式碼執行結果都會不同)