手動實現線性回歸

2021-10-22 17:22:25 字數 1671 閱讀 2254

找到**函式. y = wx + b /θx

找到目標函式(損失函式). 最小二乘法.

1 2m

∑i=1

m(yi

−y^)

\frac\sum_^m(y^i - \hat)

2m1​i=

1∑m​

(yi−

y^​)

使用梯度下降找到損失函式取的最小值的時候對應的係數.

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

x = np.linspace(0,

10,20)

+ np.random.randn(20)

y = np.linspace(0,

10,20)

+ np.random.randn(20)

plt.plot(x,y)

from sklearn.linear_model import linearregression

linear = linearregression(

)linear.fit(x.reshape(-1

,1),y)

# 定義**函式

deflinear_model

(w, b)

:return w * x + b

# 定義損失函式

defloss

(y_true, y_pred)

:return np.

sum(

(y_true - y_pred)**2

)/(2

*20)# 使用梯度下降求損失取的最小值的時候,w,b是多少

# 先初始化w,b

# w一般為乙個比較小的數.np.random.randn() * 0.01

w = np.random.randn()*

0.01

# b 一般初始化為0.

b =0

# 定義學習率

learning_rate =

0.01

max_iter =

10000

i =0

y_true = y

while

true

: y_pred = linear_model(w, b)

# 更新w,b

# (20, ), (20, )

dw =

-np.dot(

(y_true - y_pred)

, x)/20

db =

-np.

sum(y_true - y_pred)/20

w = w - learning_rate * dw

b = b - learning_rate * db

# 列印輸出中間的訓練過程

# 每100次列印.

if i %

100==0:

y_pred = linear_model(w, b)

cost = loss(y_true, y_pred)

print

(f'w: , b: , 損失: '

)# 退出條件.

i +=

1if i > max_iter:

break

手動實現線性回歸

我們自定義資料,使用torch實現線性回歸。假設我們的基礎模型是y wb c,其中,w,b均為引數 我們是用y 3x 0.8 來構造資料x,y 所以最後求出的w,b應該接近3,0.8.1.準備資料 2.計算 值 3.計算損失,把引數梯度設定為0,進行反向傳播。4.更新引數 import torch ...

Pytorch實現線性回歸 手動

pytorch實現線性回歸 假設我們的基礎模型就是 y wx b 其中w和b均為引數,我們使用y 3 x 0.8來構造資料x,y 所以最後通過模型應該能夠得到w和b應該在3與0.8附近。思路如下 1準備資料 2計算 值 3計算損失,把引數的梯度設定為0,進行反向傳播 4更新引數 5效果視覺化 1準備...

手動實現邏輯回歸

1.定義 函式.sigmoid g z 11 e z g z frac g z 1 e z 1 2.定義損失函式 目標 函式 3.使用梯度下降求損失函式最小時的係數 import numpy as np import pandas as pd import matplotlib.pyplot as ...