在回歸模型裡,線性回歸絕對是最簡單的,但這並不妨礙它成為回歸問題上的佼佼者。對於絕大部分的資料分析場景,線性回歸是我們的首選。歸其原因,有幾點:
模型簡單且適用於大資料。訓練起來也非常快,資源消耗也少。
線性回歸的評估標準?
一種最簡單的方法就是測量真實值和**值之間的差異,也叫做誤差。假設一條線很好地擬合資料,誤差就會變小,反之這個誤差就會變大。所以我們需要找的那條線是使得這個誤差最小的直線。
我們把這個誤差也叫作損失函式(loss function)。有了損失函式之後我們的目標就變成了尋找模型的引數使得這個損失函式值最小。
尋找最優引數其實就是最優化問題, 也稱作模型的訓練。那如何求解線性回歸的最優解呢?
一種最優解的求解方法:把導數設定為零!
這裡不寫推導過程,那如何用**實現呢?
# 建立資料集
import numpy as np
data = np.array([[
152,51]
,[156,53]
,[160,54]
,[164,55]
,[168,57]
,[172,60]
,[176,62]
,[180,65]
,[184,69]
,[188,72]
])x, y = data[:,
0], data[:,
1]print
(x.shape,y.shape)(10
,)(10
,)
# 手動實現線性回歸演算法
w =(np.mean(x*y)
-np.mean(x)
*np.mean(y))/
(np.mean(x*x)
-np.mean(x)
*np.mean(x)
)b = np.mean(y)
-w*np.mean(x)
print
("通過手動實現的線性回歸模型引數: %.5f %.5f"
%(w,b)
)通過手動實現的線性回歸模型引數:
0.57576
-38.07879
# 使用sklearn來實現線性回歸模型,可以用來比較一下與手動實現的結果
from sklearn.linear_model import linearregression
model = linearregression(
).fit(x.reshape(-1
,1),y)
print
("基於sklearn的線性回歸模型引數: %.5f %.5f"
%(model.coef_, model.intercept_)
)基於sklearn的線性回歸模型引數:
0.57576
-38.07879
一元線性回歸模型
按西瓜書公式寫的,比較簡陋,但可以執行幫助理解 import math d 65 6 50,5 120,15 98 12 51,6 66 8 70,10 78 11 75,10 120,8 45 7 該資料集表示 體重,血糖值 體重為x 血糖值為標記 一元線性回歸試圖求得g ax b使g擬合f 輸入...
一元線性回歸模型 Python
演示建模過程 import collections collections 是python內建的乙個集合模組 import pandas as pd import matplotlib.pyplot as plt 1 建立資料集 jobdict job orderdict collections.o...
python 一元線性回歸模型
模型中只有乙個自變數和因變數可表示成 數學公式可表示成 其中a為模型的截距項,b為模型的斜率項,就是如何根據自變數x和因變數y求解回歸係數a和b。如果擬合線能夠精確地捕捉到每乙個點 所有的散點全部落在擬合線上 那麼對應的誤差項 誤差平方和的公式可以表示為 公式轉換 求解a和b 樣本量 n incom...