邏輯回歸(Logistic Regression)

   說到現在最火的就是AI,今天來研究一下機器學習的監督式學習的部分

邏輯回歸(Logistic Regression)是一種廣泛使用的統計方法,用於分類問題。它適用於二分類問題,即模型的輸出是兩個可能的類別之一。邏輯回歸通過使用邏輯函數(也稱為Sigmoid函數)來估計事件發生的概率。

邏輯回歸的基本概念

邏輯回歸的主要目的是找到一條最佳的分界線(決策邊界),將數據集分成不同的類別。其基本思想如下:

  1. 線性組合:邏輯回歸首先計算特徵的線性組合。假設有特徵 X1,X2,...,XnX_1, X_2, ..., X_n,邏輯回歸模型計算:

    z=β0+β1X1+β2X2+...+βnXnz = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + ... + \beta_n X_n

    其中 β\beta 是模型的參數(權重)。

  2. 邏輯函數:接著,將線性組合結果 zz 通過邏輯函數轉換成概率值 pp。邏輯函數的形式如下:

    p=11+ezp = \frac{1}{1 + e^{-z}}

    這個函數將 zz 的值壓縮到 [0, 1] 之間。

  3. 分類決策:根據概率值 pp,設置一個閾值(通常為0.5),來決定輸出標籤:

    y^={1if p0.50if p<0.5\hat{y} = \begin{cases} 1 & \text{if } p \ge 0.5 \\ 0 & \text{if } p < 0.5 \end{cases}
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

# 創建一個簡單的數據集
data = {
    'Feature1': [2.3, 1.7, 3.1, 3.5, 2.1, 1.6, 2.8, 3.0, 3.2, 2.7],
    'Feature2': [4.5, 3.2, 5.1, 5.5, 3.9, 2.4, 4.3, 4.8, 5.0, 4.1],
    'Label': [0, 0, 1, 1, 0, 0, 1, 1, 1, 0]
}

# 轉換為DataFrame
df = pd.DataFrame(data)

# 分離特徵和標籤
X = df[['Feature1', 'Feature2']]
y = df['Label']

# 切分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 初始化邏輯回歸模型
model = LogisticRegression()

# 訓練模型
model.fit(X_train, y_train)

# 使用測試集進行預測
y_pred = model.predict(X_test)

# 評估模型
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
class_report = classification_report(y_test, y_pred)

# 輸出結果
print(f'Accuracy: {accuracy:.2f}')
print('Confusion Matrix:')
print(conf_matrix)
print('Classification Report:')
print(class_report)

  • 創建一個簡單的數據集。
  • 使用pandas將數據集轉換為DataFrame。
  • 分離特徵和標籤。
  • 使用train_test_split切分訓練集和測試集。
  • 初始化並訓練邏輯回歸模型。
  • 使用測試集進行預測。
  • 評估模型的準確性、混淆矩陣和分類報告。

留言

熱門文章