機器學習(四)一元線性回歸

2021-10-08 17:21:51 字數 3500 閱讀 2196

hθ(

x)=θ

0+θ1

xh_\theta(x) = \theta_0+\theta_1x

hθ​(x)

=θ0​

+θ1​

x這個方程對於的影象是一條直線,稱為回歸線。其中θ

1\theta_1

θ1​為回歸線的斜率,θ

0\theta_0

θ0​為回歸線的截距

j (θ

0,θ1

)=1/

2m∑i

=1m(

yi−h

θ(xi

))

2j(\theta_0,\theta_1) = 1/2m\sum_^

j(θ0​,

θ1​)

=1/2

mi=1

∑m​(

yi−h

θ​(x

i))2

y

yy 為真實值,**值為 hθ(

x)

h_\theta(x)

hθ​(x)

誤差平方為 (y−

hθ(x

))

2(y-h_\theta(x))^2

(y−hθ​

(x))

2 2.尋找合適的引數,使得誤差平方和最小。

3.**實現

#最小二乘法  b為截距 k為斜率

defcompute_error

(b, k, x_data, y_data)

: totalerror =

0for i in

range(0

,len

(x_data)):

totalerror +=

(y_data[i]

-(k * x_data[i]

+ b))**

2return totalerror /

float

(len

(x_data))/

2.0

θj:

=θj−

α∂∂θ

jj(θ

0,θ1

)\theta_j: = \theta_j-\alpha\frac j(\theta_0,\theta_1)

θj​:=θ

j​−α

∂θj​

∂​j(

θ0​,

θ1​)

( fo

rj=1

andj

=0

)(for j = 1 and j = 0)

(forj=

1and

j=0)

其中偏導部分的求法:

∂ ∂θ

jj(θ

0,θ1

)=

\frac j(\theta_0,\theta_1)=

∂θj​∂​

j(θ0

​,θ1

​)=j=0

:∂∂θ

0j(θ

0,θ1

)=1m

∑i=1

m(hθ

(xi)

−yi)

j = 0: \frac j(\theta_0,\theta_1)=\frac \sum_^

j=0:∂θ

0​∂​

j(θ0

​,θ1

​)=m

1​i=

1∑m​

(hθ​

(xi)

−yi)j=

1:∂∂

θ1j(

θ0,θ

1)=1

m∑i=

1m(h

θ(xi

)−yi

).xi

j = 1: \frac j(\theta_0,\theta_1)=\frac \sum_^

j=1:∂θ

1​∂​

j(θ0

​,θ1

​)=m

1​i=

1∑m​

(hθ​

(xi)

−yi)

.xi

# learning rate

lr =

0.0001

#截距b =

0#斜率

k =0

#最大迭代次數

epochs =

50#梯度下降法求 b 和 k

defgradient_descent_runner

(x_data, y_data, b, k, lr, epochs)

:# 計算總資料量

m =float

(len

(x_data)

)# 迴圈epochs次

for i in

range

(epochs)

: b_grad =

0 k_grad =

0# 計算梯度的總和再求平均

for j in

range(0

,len

(x_data)):

b_grad +=(1

/m)*((

(k * x_data[j]

)+ b)

- y_data[j]

) k_grad +=(1

/m)* x_data[j]*(

((k * x_data[j]

)+ b)

- y_data[j]

)# 更新b和k

b = b -

(lr * b_grad)

k = k -

(lr * k_grad)

# 每迭代5次,輸出一次影象

if i %5==

0:print

("epochs:"

,i) plt.plot(x_data, y_data,

'b.'

) plt.plot(x_data, k*x_data + b,

'r')

plt.show(

)return b, k

利用 sklearn庫中的 linearregression(線性回歸)函式

from sklearn.linear_model import linearregression#匯入線性回歸函式

import numpy as np

import matplotlib.pyplot as plt

# 建立並擬合模型

model = linearregression(

)model.fit(x_data, y_data)

# 畫圖

plt.plot(x_data, y_data,

'b.'

)plt.plot(x_data, model.predict(x_data)

,'r'

)plt.show(

)

Python 機器學習 一元線性回歸

一元線性回歸模型很簡單 y1 ax b y1為實際值,為正態的誤差。y2 ax b,y2為 值。y1 y2。def model a,b,x return a x b 這裡將整組資料的 結果方差作為損失函式。j a,b sum y1 y2 2 n def cost a,b,x,y x is argu,...

機器學習(一) 一元線性回歸演算法

一 機器學習一般步驟 二 公式中符號解釋 m 訓練樣本的數量 x 輸入變數 y 輸出變數 x,y 乙個訓練樣本資料 x i y i 第i行訓練樣本資料 例如 房價與房子大小以及臥室個數 樓層個數 房齡之間關係的訓練樣本,如下表 size bed room num floors num age of ...

機器學習 一元線性回歸演算法

線性回歸 線性回歸擬合原理 fit方法 ridge回歸 損失函式 l2 lasso回歸 損失函式 l1 懲罰項係數alpha高,菱形面積小,alpha低,菱形面積大 elastic net 損失函式 l1 l2 舉例 lasso回歸是隨機梯度下降 l1,此處選擇懲罰項係數為0.15 與 之對比的sg...