手撕機器學習線性回歸

2021-09-29 21:34:03 字數 1602 閱讀 2697

import numpy as np

deflinearregression

(data_x,data_y,learningrate,loopnum)

: w = np.zeros(shape=[1

, data_x.shape[1]

])# w的shape取決於特徵個數,而x的行是樣本個數,x的列是特徵值個數

# 所需要的w的形式為 行=特徵個數,列=1 這樣的矩陣。但也可以用1行,再進行轉置:w.t

# x.shape[0]取x的行數,x.shape[1]取x的列數

b =0#梯度下降

for i in

range

(loopnum)

: w_derivative = np.zeros(shape=[1

, data_x.shape[1]

])b_derivative, cost =0,

0 wxplusb = np.dot(data_x, w.t)

+ b # w.t:w的轉置

w_derivative += np.dot(

(wxplusb - data_y)

.t, data_x)

# np.dot:矩陣乘法

b_derivative += np.dot(np.ones(shape=[1

, data_x.shape[0]

]), wxplusb - data_y)

cost +=

(wxplusb - data_y)

*(wxplusb - data_y)

w_derivative = w_derivative / data_x.shape[0]

# data_x.shape[0]:data_x矩陣的行數,即樣本個數

b_derivative = b_derivative / data_x.shape[0]

w = w - learningrate*w_derivative

b = b - learningrate*b_derivative

cost = cost/(2

*data_x.shape[0]

)if i %

100==0:

print

(cost)

print

(w)print

(b)if __name__==

"__main__"

: x = np.random.normal(0,

10,100)

noise = np.random.normal(0,

0.05,20

) w = np.array([[

3,5,

8,2,

1]])

#設5個特徵值

x = x.reshape(20,

5)#reshape成20行5列

noise = noise.reshape(20,

1)y = np.dot(x, w.t)+6

+ noise

linearregression(x, y,

0.003

,5000

)

機器學習 線性回歸

可以說基本上是機器學習中最簡單的模型了,但是實際上其地位很重要 計算簡單 效果不錯,在很多其他演算法中也可以看到用lr作為一部分 先來看乙個小例子,給乙個 線性回歸是什麼 的概念。圖來自 2 假設有乙個房屋銷售的資料如下 面積 m 2 銷售價錢 萬元 123 250 150 320 87 160 1...

機器學習(線性回歸)

在機器學習中,回歸 分類和標註共同構成了監督學習技術。監督學習 supervised learning 是機器學習在工業界應用最廣的乙個領域分支。在學術界中也是研究最多的領域之一。大家都知道的資料探勘十大經典演算法中,監督學習技術佔據6席。方法 自變數 特徵 因變數 結果 關係 回歸演算法是試圖採用...

機器學習 線性回歸

line fitter linearregression 建立模型 line fitter.fit temperature,sales 傳入引數 sales predict line fitter.predict temperature 模型 直線 直線上會有loss 計算loss時 要使用平方距離...