找到**函式. y = wx + b /θx
找到目標函式(損失函式). 最小二乘法.
1 2m
∑i=1
m(yi
−y^)
\frac\sum_^m(y^i - \hat)
2m1i=
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 ...