機器學習回歸篇 簡單線性回歸

2021-07-24 07:23:16 字數 2568 閱讀 4160

之前的幾篇裡面講了機器學習分類問題的一些演算法,下面幾篇來講一下回歸問題。

回歸問題和分類問題有什麼區別呢?

分類問題**的結果是一些類別值,比如說,顏色類別,電腦品牌,有無信譽等。

回歸問題**的是連續型的數值,如房價,人數,降雨量等等

生活中我們做決定的過程通常是根據兩個或多個變數之間的關係,解決回歸問題就是通過建立方程來模擬兩個或多個變數間的關係,被**的變數叫做因變數,被用來**的變數叫做自變數。回歸問題在中學階段的數學課上已經有過簡單涉及,這裡也算是再次複習一下。

本篇所講的簡單線性回歸,就是只包含乙個自變數(x)和乙個因變數(y),兩個變數的關係用一條直線來模擬的回歸問題。至於包含兩個以上變數的多元線性回歸,以及非線性回歸在後面的篇幅中再說。

先來看理解線性回歸的幾個方程

簡單線性回歸模型:

y = β1x + β0 + e

這裡的β1和β0分別是直線方程裡的引數。e代表著隨機因素帶來的偏差,

是均值為0的正態分佈。

簡單線性回歸方程:

e(y) = β1x + β0

這裡e(y)代表y的期望,因為偏差e均值為0這裡去掉。

簡單線性回歸估計方程:

y估計 = b1x + b0

這裡的b1和b0是我們根據一組已知的x,y樣本計算出的值,是線性回歸方程的估計引數,也是我們想要利用簡單線性回歸要計算出的引數。

另外簡單線性回歸自變數與因變數之間的關係包括,正向線性關係,反向線性關係,無關係,分別對應方程直線斜率》0, <0, =0的情況。

線性回歸分析的流程:

那麼怎樣通過一組樣本列出簡單線性回歸的估計方程呢?下面用乙個例子來說明。

一家汽車廠商月廣告的數量x與月汽車銷售數量y的對應關係如上圖所示。

只有乙個自變數x和乙個因變數y,典型的簡單線性回歸問題。

我們要做的就是找到一條直線,使得上表中每乙個x對應的y值與方程中相應x的y值之差的平方的和最小。

也就是

滿足這種情況的直線也就是最能代表這組樣本趨勢的一條直線

y估計 = b1x + b0 ,要做的就是求這種情況下的b1,b0。

求解過程利用到乙個極值問題,上述公式差平方的和最小,這裡略去推導的過程直接給出最終的公式:

通過上述公式就能求解出b1和b0的值,這裡計算一下,將上圖中的資料代入公式中,解出b1 = 5, b0 = 10

也就是最終的線性回歸的估計方程為

y = 5x + 10

這樣假如再給出比如月廣告數量x為7,那麼就可以推算出月銷售數量y為45。

如圖:

下面是簡單的python的實現

import numpy as np

#因為要用到均值等計算所以呼叫numpy庫

#np.mean(x)返回列表x的均值

#函式fitslr輸入樣本,列表x,y 返回最終估計方程的b1, b0, 主要還是直接使用上述給出的代數公式

deffitslr

(x, y):

n = len(x)

denominator = 0

numerator = 0

for i in range(0, n):

numerator += (x[i] - np.mean(x)) * (y[i] - np.mean(y))

denominator += (x[i] - np.mean(x))**2

b1 = numerator / float(denominator)

b0 = np.mean(y) - b1*np.mean(x)

return b0, b1

#**的函式, 給出要**的x值,和估計方程的b0,b1,返回乙個y值

defpredict

(x, b0, b1):

return b0 + x*b1

#下面用兩組列表呼叫上定義的兩個函式呼叫一下

x = [1, 3, 2, 1, 3]

y = [14, 24, 18, 17, 27]

b0, b1 = fitslr(x, y)

print

"intercept:", b0, "slope:", b1

x_test = 7

y_test = predict(7, b0, b1)

print

"y_test:", y_test

#成功根據計算好的方程,**x=7時,y**結果為45

機器學習 線性回歸( 簡單線性回歸的實現)

案例 給定一組資料 1,1 2,3 3,2 4,3 5,5 試通過簡單線性回歸求出擬合的直線,並能根據擬合的直線計算給定資料集的 值。1 繪製出影象。2 根據公式計算a和b的值。3 將要 的資料代入到擬合直線的方程進行計算。紅色直線即我們通過簡單線性回歸得到的擬合函式。將簡單線性回歸編寫為乙個類,在...

機器學習線性回歸 機器學習中的簡單線性回歸步驟

簡單線性回歸,這是一種基於自變數值 x 來 因變數值 y 的方法。假設這兩個變數是線性相關的。因此,我們嘗試尋找一種根據特徵或自變數 x 的線性函式來精確 響應值 y 我們將按照之前的資料預處理資訊圖表那樣來執行相同的步驟 其中第三相關庫matplotlib是用來視覺化資料的。匯入資料集 檢查缺失資...

機器學習(1) 簡單線性回歸

coding utf8 import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt from matplotlib.font manager import rebuild rebuild mpl.rcpara...