1.確定假設函式
如:y=2x+7
其中,(x,y)是一組資料,設共有m個
2.誤差cost
用平方誤差代價函式
3.減小誤差(用梯度下降)
1.初始化資料
x、y:樣本
learning rate:學習率
迴圈次數loopnum:梯度下降次數
2.梯度下降
迴圈(迴圈loopnum次):
(1)算偏導(需要乙個for迴圈遍歷所有資料)
(2)利用梯度下降數學式子
import numpy as np
deflinearregression
(data_x,data_y,learningrate,loopnum):
w,b=0,0
#梯度下降
for i in range(loopnum):
w_derivative, b_derivative, cost = 0, 0, 0
for j in range(len(data_x)):
wxplusb=w*data_x[j]+b
w_derivative+=(wxplusb-data_y[j])*data_x[j]
b_derivative+=wxplusb-data_y[j]
cost+=(wxplusb-data_y[j])*(wxplusb-data_y[j])
w_derivative=w_derivative/len(data_x)
b_derivative=b_derivative/len(data_x)
w = w - learningrate*w_derivative
b = b - learningrate*b_derivative
cost = cost/(2*len(data_x))
if i%100==0:
print(cost)
print(w)
print(b)
if __name__== "__main__": #_x:protected __x:private
x=np.random.normal(0,10,100)
noise=np.random.normal(0,0.05,100)
y=2*x+7+noise
linearregression(x,y,0.01,5000)
1.輸出cost
可以看到,一開始的誤差是很大的,然後減小了
最後幾次輸出的cost沒有變化,可以將訓練的次數減小一點
2.訓練完的w和b
和目標w=2,b=7很接近
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,...
機器學習 一元線性回歸演算法
線性回歸 線性回歸擬合原理 fit方法 ridge回歸 損失函式 l2 lasso回歸 損失函式 l1 懲罰項係數alpha高,菱形面積小,alpha低,菱形面積大 elastic net 損失函式 l1 l2 舉例 lasso回歸是隨機梯度下降 l1,此處選擇懲罰項係數為0.15 與 之對比的sg...
機器學習(四)一元線性回歸
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 ...