手動實現邏輯回歸

2021-10-22 17:24:29 字數 1451 閱讀 9456

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 plt

defsigmoid

(w,b)

: linear = np.dot(x,w)

+ b return1/

(1+ np.exp(

-linear)

)def

loss

(y_true,y_pred)

:return

-np.

sum(y_true * np.log(y_pred)+(

1-y_true)

*np.log(

1-y_pred))/

100w = np.random.randn(2)

*0.01

b =0

learning_rate =

0.01

max_iter =

10000

i =0

while

true

: y_pred = sigmoid(w,b)

# 計算梯度/導數

dw = np.dot(

(y_pred - y_true)

,x)/

100 db = np.

sum(y_pred - y_true)

/100

w = w - learning_rate * dw

b = b - learning_rate * db

# 每隔100輸出中間過程

if i %

100==0:

# 計算準確率和損失函式

# 設定閾值把概率轉換為類別

# 假設閾值為0.5, >0.5為正例

y_ =

(y_pred >=

0.5)

accuracy=

(y_ == y_true)

.mean(

)

y_pred = sigmoid(w,b)

cost=loss(y_true,y_pred)

print

(f'第次訓練,損失:,準確率:'

)

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 ...

手動實現線性回歸

找到 函式.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 im...

機器學習 邏輯回歸 Python實現邏輯回歸

coding utf 8 author 蔚藍的天空tom import numpy as np import os import matplotlib.pyplot as plt from sklearn.datasets import make blobs global variable path...