線性回歸python底層實現
一、實現目標
1.了解最優線性回歸模型引數的解析解的求解過程
2.幫助大家加深線性回歸模型的基本求解原理
3.掌握通過乙個簡單的工具包呼叫過程幫助大家掌握快速實現線性回歸模型的方法。
二、案例內容介紹
線性回歸是極其學習中最基本的模型,用來擬合自變數和因變數之間呈現線性關係的資料,當自變數只有乙個時我們稱使用的回歸模型是一元線性回歸模型,
當自變數有多個時稱使用的回歸模型是多元線性回歸模型。根據已知資料,求解線性回歸模型的引數最常用到的方法是最小二乘法,求解使得損失函式取得最小值的模型引數的解 析解或者使用梯度下降演算法求得最優的模型引數。
三、理論熟悉**:
一元線性回歸原理及python簡單實現
參考**:
四、實驗步驟
資料集說明:本本實驗使用的是構造的資料集,資料構造的過程在**中有明確顯示。
1、一元線性回歸python底層實現
# 一元線性回歸的實現
# 匯入matplotlib庫,主要用於視覺化
import numpy as np
from matplotlib.font_manager import fontproperties
import matplotlib.pyplot as plt
%matplotlib inline
# 引入本地字型檔案,否則中文會有亂碼
# font_set = fontproperties(fname=r"./work/ simsun.ttc", size=12)
# 構造用於訓練的資料集
x_train = [4, 8, 5, 10, 12]
y_train = [20, 50, 30, 70, 60]
# 畫圖函式
def draw(x_train, y_train):
plt.scatter(x_train, y_train)
# 定義函式求得斜率w和截距b
# 使用最小二乘法對斜率和截距求導並使得導數值等於0求解出斜率和截距
def fit(x_train, y_train):
size = len(x_train)
numerator = 0 # 初始化分子
denominator = 0 # 初始化分母
for i in range(size):
numerator += (x_train[i] - np.mean(x_train)) * \
(y_train[i] - np.mean(y_train))
denominator += (x_train[i] - np.mean(x_train)) ** 2
w = numerator / denominator
b = np.mean(y_train) - w * np.mean(x_train)
return w, b
# 根據斜率w和截距b,輸入x計算輸出值
def predict(x, w, b):
# **模型
y = w * x + b
return y
# 根據w,b畫圖
def fit_line(w, b):
# 測試集進行測試,並作圖
# linspace 建立等差數列的函式 #numpy.limspace(start,stop,num,endpoint=true,retstep=false,dtype=none,axis=0#)
x = np.linspace(4, 15, 9)
y = w * x + b
plt.plot(x, y)
plt.show()
if __name__ == "__main__":
draw(x_train, y_train)
w, b = fit(x_train, y_train)
print(w, b) # 輸出斜率和截距
fit_line(w, b) # 繪製**函式影象
python實現線性回歸
定義 線性回歸在假設特徵滿足線性關係,根據給定的訓練資料訓練乙個模型,並用此模型進行 文中只介紹了簡單的概念,不涉及公式的證明等。從最簡單的一元線性關係介紹,假設有一組資料型態為 y theta x,其中 x y 我們根據 x,y 模擬出近似的 theta 引數值,進而得到 y theta x 模型...
python實現線性回歸
線性回歸模型是最簡單的機器學習模型,基礎可以從線性回歸模型開始入手,慢慢地過渡到非線性回歸以及神經網路模型。1.概念 2.線性回歸 簡單回歸 乙個自變數輸入,y x是一對一的關係,對映到幾何上來說就是二維座標系的直線方程,可表示為y 多元回歸 多個自變數,改變維度的大小。即 3.最小二乘法 通過向量...
python實現線性回歸
線性回歸模型是機器學習中最基礎的演算法,同時也在工業上得到很大應用。編碼實現該方法,可以對其有個透徹理解。回歸模型 目標函式 對目標函式求偏導 更新引數 樣本矩陣表示 python 實現 import numpy as np class linear object def init self sel...