2021-04-24 Python 最小二乘法求解线性回归模型
Python 最小二乘法求解線性回歸模型
機器學(xué)習(xí)線性回歸模型
線性回歸(linear regression)是一種線性模型,它假設(shè)輸入變量 x 和單個輸出變量 y 之間存在線性關(guān)系
具體來說,利用線性回歸模型,可以從一組輸入變量 x 的線性組合中,計算輸出變量 y:y=ax+b
給定有d個屬性(特征)描述的示例 x =(x1; x2; …; xd),其中xi是x在第i個屬性(特征)上的取值,線性模型(linear model)試圖學(xué)得一個通過屬性(特征)的線性組合來進行預(yù)測的函數(shù),即:
一般用向量形式寫成:
其中 w = {w1,w2,w3,,,,,,}。
?
許多功能更為強大的非線性模型可在線性模型的基礎(chǔ)上通過引入層級結(jié)構(gòu)或高維映射而得。
最小二乘法求解
基于均方誤差最小化來進行模型求解的方法稱為“最小二乘法”(least square method)
它的主要思想就是選擇未知參數(shù),使得理論值與觀測值之差的平方和達到最小。
?
我們假設(shè)輸入屬性(特征)的數(shù)目只有一個:
在線性回歸中,最小二乘法就是試圖找到一條直線,使所有樣本到直線上的歐式距離之和最小。
求解線性回歸
求解w和b,使得最小化的過程,稱為線性回歸模型的“最小二乘參數(shù)估計”。
將E(w,b)分別對w和b求導(dǎo),可以得到
令偏導(dǎo)數(shù)都為0,可以得到
—— 其中
代碼實現(xiàn)
### 0.引入依賴 import numpy as np import matplotlib.pyplot as plt ### 1.導(dǎo)入數(shù)據(jù) points = np.genfromtxt('data.csv',delimiter=',') # 提取points中的兩列數(shù)據(jù),分別作為x,y x = points[:, 0] y = points[:, 1] # 用plt畫出散點圖 plt.scatter(x, y) plt.show()### 2.定義損失函數(shù) # 損失函數(shù)是系數(shù)的函數(shù),另外還要傳入數(shù)據(jù)的x,y def compute_cost(w, b, points):total_cost = 0M = len(points)#逐點計算平方損失,然后計算平均值for i in range(M):x = points[i, 0]y = points[i, 1]total_cost += (y - w*x -b) ** 2return total_cost/M### 3.定義算法擬合函數(shù) # 先定義一個求均值的函數(shù) def average(data):sum = 0num = len(data)for i in range(num):sum += data[i]return sum/num# 定義核心擬合函數(shù) def fit(points):M = len(points)x_bar = average(points[:,0])sum_yx = 0sum_x2 = 0sum_delta = 0for i in range(M):x = points[i, 0]y = points[i, 1]sum_yx += y * (x - x_bar)sum_x2 += x ** 2# 根據(jù)公式計算ww = sum_yx / (sum_x2 - M * (x_bar ** 2))for i in range(M):x = points[i, 0]y = points[i, 1]sum_delta += (y - w * x)b = sum_delta / Mreturn w, b### 4. 測試 w ,b = fit(points) print("w is: ", w) print("b is: ", b) cost = compute_cost(w, b, points) print("cost is : ",cost) ### 5.畫出擬合曲線 plt.scatter(x,y) #針對每一個x,計算得出預(yù)測的y值 pred_y = w * x + b plt.plot(x, pred_y, c='r') plt.show()Matlab版本感興趣的讀者可以自己試一下求解,
總結(jié)
以上是生活随笔為你收集整理的2021-04-24 Python 最小二乘法求解线性回归模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-04-14 Matlab实现模
- 下一篇: 2021-04-24 人工智能必读书单