邏輯迴歸模型

归去_来兮發表於2024-09-05

  核心:線性迴歸+sigmoid對映。

一、概述

  邏輯迴歸模型(Logistic Regression,LR),由名稱上來看,似乎是一個專門用於解決迴歸問題的模型,事實上,該模型更多地用於解決分類問題,尤其是二分類問題。這並不矛盾,因為邏輯迴歸直接輸出的是一個連續值,我們將其按值的大小進行切分,不足一定範圍的作為一個類別,超過一定範圍的作為一個類別,這樣就實現了對分類問題的解決。概況來說就是,先對資料以線性迴歸進行擬合,輸出值以Sigmoid函式進行對映,對映到0和1之間,最後將S曲線切分上下兩個區間作為類別區分的依據。

二、演算法原理

  演算法核心是線性迴歸+sigmoid對映。具體來說,就是對於一個待測樣本,以指定的權重和偏置量,計算得到一個輸出值,進而將該輸出值經過sigmoid進一步計算,對映至0和1之間,大於0.5的作為正類,不足0.5的作為負類。模型原理圖示可概括為

  線性迴歸的表示式可表示為 \(z=w\cdot x+b\),sigmoid函式表示式表示為 \(y=\frac{1}{1+e^{-z}}\),那麼邏輯迴歸模型的表示式即是\(y=\frac{1}{1+e^{-(w\cdot x+b)}}\)
邏輯迴歸的分類演算法可表示為

\[\left\{ \begin{aligned} &-1, \frac{1}{1+e^{-(w\cdot x+b)}}<0.5\\ &1, \frac{1}{1+e^{-(w\cdot x+b)}}\geq0.5 \end{aligned} \right. \]

  邏輯迴歸模型的訓練採用交叉熵損失函式,在最佳化過程中,計算得到最佳的引數值,表示式如下

\[J\left( \theta \right)=-\frac{1}{m} \sum_{i=1}^{m}\left[ {y^ilog(h(x^i))} +(1-y^i)log(1-h(x^i))\right] \]

三、Python實現

import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
## 1.定義資料集
train_x = [
    [4.8,3,1.4,0.3],
    [5.1,3.8,1.6,0.2],
    [4.6,3.2,1.4,0.2],
    [5.3,3.7,1.5,0.2],
    [5,3.3,1.4,0.2],
    [7,3.2,4.7,1.4],
    [6.4,3.2,4.5,1.5],
    [6.9,3.1,4.9,1.5],
    [5.5,2.3,4,1.3],
    [6.5,2.8,4.6,1.5]
]

# 訓練資料標籤
train_y = [
    'A',
    'A',
    'A',
    'A',
    'A',
    'B',
    'B',
    'B',
    'B',
    'B'
]


# 測試資料
test_x = [
    [3.1,3.5,1.4,0.2],
    [4.9,3,1.4,0.2],
    [5.1,2.5,3,1.1],
    [6.2,3.6,3.4,1.3]
]

# 測試資料標籤
test_y = [
    'A',
    'A',
    'B',
    'B'
]

train_x = np.array(train_x)
train_y = np.array(train_y)
test_x = np.array(test_x)
test_y = np.array(test_y)

## 2.模型訓練
clf_lr = LogisticRegression()
rclf_lr = clf_lr.fit(train_x, train_y)

## 3.資料計算
pre_y = rclf_lr.predict(test_x)
accuracy = metrics.accuracy_score(test_y,pre_y)

print('預測結果為:',pre_y)
print('準確率為:',accuracy)




End.




pdf下載

相關文章