梯度下降法 一元線性回歸

2021-09-27 09:41:10 字數 1806 閱讀 5640

import numpy as np

import matplotlib.pyplot as plt

#載入資料,delimite表示分隔符為逗號

data=np.genfromtxt(

"data.csv"

,delimiter=

",")

x_data=data[:,

0]y_data=data[:,

1]plt.scatter(x_data,y_data)

plt.show(

)#學習率learning rate

lr=0.0001

#截距b=

0#斜率k=0

#最大迭代次數

epochs=

50#最小二乘法

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))**2

return totalerror/

float

(len

(x_data))/

2.0def

gradient_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

print

("starting b=,k=,error="

.format

(b,k,compute_error(b,k,x_data,y_data)))

print

("running"

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

print

("after iteration, b=,k=,error="

.format

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

))

梯度下降法 一元線性回歸

import numpy as np import matplotlib.pyplot as plt 載入資料 data np.genfromtxt data.csv delimiter x data data 0 y data data 1 plt.scatter x data,y data pl...

1 回歸 一元線性回歸 代價函式 梯度下降法

1 回歸是達爾文表弟發現的,就是說人類總體有乙個平均身高。那個高個子生的孩子都個高,矮的孩子生的矮。但是他們的下一代大部分都往平均身高長,也就是說特別高的人,他們的孩子會很高,但是往往比他們自己矮。特別矮的人他們生的孩子會矮一些,但是會比自己的父母高,他們都有這種趨勢。表弟管這個叫做回歸。2 一元線...

機器學習演算法基礎 梯度下降法求一元線性回歸

import numpy as np import matplotlib.pyplot as plt 載入資料 data np.genfromtxt c ml chapter 1 data.csv delimiter x data data 0 y data data 1 plt.scatter x...