python實現線性回歸

2021-08-20 19:17:24 字數 2052 閱讀 1762

定義:

線性回歸在假設特徵滿足線性關係,根據給定的訓練資料訓練乙個模型,並用此模型進行**。

文中只介紹了簡單的概念,不涉及公式的證明等。        

從最簡單的一元線性關係介紹,假設有一組資料型態為 y=theta * x,其中 x = , y = 。

我們根據 x, y 模擬出近似的 theta 引數值,進而得到 y=theta * x 模型,這個過程就是線性回歸分析。後面如果給出新的  x 值時,我們通過 y=theta * x 可以**出 y。

通過損失函式求解 theta 值常用有兩種方式:最小二乘法 and 梯度下降法。

使用最小二乘法可以直接求出 theta 值,如下圖引數 theta 計算結果。但是在計算過程中會耗費大量的cpu等資源。

梯度下降法屬於迭代法的一種:迭代法是通過一步一步的不斷優化更新權重引數,使其最後達到最優解(因為我們的損失函式是凸函式,所以是全域性最優解),其中,α是學習率(也叫步長,在訓練模型的時候需要手動調整的引數,需要調整適宜的學習率。  j(theta) 就是 l

**中的 data.csv 資料及原始碼:

import numpy as np

from numpy.linalg import inv

from numpy import dot

from numpy import mat

import pandas as pd

dataset = pd.read_csv('d:\projects\\ai\linear_regression\linear_regression\data.csv')

# print(dataset)

temp = dataset.iloc[:, 2:5]

temp['x0'] = 1

x = temp.iloc[:, [3, 0, 1, 2]]

# print(x)

y = dataset.iloc[:, 1].values.reshape(150, 1)

theta = dot(dot(inv(dot(x.t, x)), x.t), y)          # 最小二乘法計算出來的 theta值

print(theta)

theta = np.array([1., 1., 1., 1.]).reshape(4, 1)

alpha = 0.1

temp = theta

x0 = x.iloc[:, 0].values.reshape(150, 1)

x1 = x.iloc[:, 1].values.reshape(150, 1)

x2 = x.iloc[:, 2].values.reshape(150, 1)

x3 = x.iloc[:, 3].values.reshape(150, 1)

for i in range(10000):

temp[0] = theta[0] + alpha*np.sum((y - dot(x, theta))*x0)/150.

temp[1] = theta[1] + alpha*np.sum((y - dot(x, theta))*x1)/150.

temp[2] = theta[2] + alpha*np.sum((y - dot(x, theta))*x2)/150.

temp[3] = theta[3] + alpha*np.sum((y - dot(x, theta))*x3)/150.

theta = temp

print(theta)                          

# 梯度下降法計算出 theta 值

python實現線性回歸

線性回歸模型是最簡單的機器學習模型,基礎可以從線性回歸模型開始入手,慢慢地過渡到非線性回歸以及神經網路模型。1.概念 2.線性回歸 簡單回歸 乙個自變數輸入,y x是一對一的關係,對映到幾何上來說就是二維座標系的直線方程,可表示為y 多元回歸 多個自變數,改變維度的大小。即 3.最小二乘法 通過向量...

python實現線性回歸

線性回歸模型是機器學習中最基礎的演算法,同時也在工業上得到很大應用。編碼實現該方法,可以對其有個透徹理解。回歸模型 目標函式 對目標函式求偏導 更新引數 樣本矩陣表示 python 實現 import numpy as np class linear object def init self sel...

python實現線性回歸

線性回歸模型特點 一維y ax 求a。然後對未知x進行 就是線性回歸 線性回歸的一般性表示 這個公式是由1維推廣過來的。左邊公式中x的0次冪是1所以可以推出時0到n的和。可以推出右邊公式兩個矩陣相乘。l為損失函式 損失函式用的歐幾里得距離公式 為了讓損失最小,l應該為導數為0的點。對損失函式公式進行...