邏輯回歸簡介和實現

一、邏輯回歸簡介

邏輯回歸是一種二分類演算法,常用於解決問題:某件事情能/不能發生、某個人患病/不患病等。邏輯回歸演算法的輸入是一些特徵,輸出是取值為0或1的標籤,它的目標是通過學習來預測輸入與輸出之間的關係。

邏輯回歸模型基於 sigmoid 函數(或 logistic 函數)進行建模。sigmoid 函數的定義為:$f(x)=\frac{1}{1+e^{-x}}$。它能將任意輸入映射到區間 [0,1] 上,這就使得它非常適合用於實現二分類問題。

二、邏輯回歸演算法實現

1. 數據預處理

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

# 載入數據集
data = pd.read_csv('data.csv')
X = data.iloc[:, :-1]
y = data.iloc[:, -1]

# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# 特徵縮放
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

2. 模型訓練

from sklearn.linear_model import LogisticRegression

# 創建邏輯回歸對象
classifier = LogisticRegression(random_state=0)

# 用訓練集訓練模型
classifier.fit(X_train, y_train)

3. 模型預測

# 對測試集做預測
y_pred = classifier.predict(X_test)

4. 模型評估

from sklearn.metrics import confusion_matrix, accuracy_score

# 創建混淆矩陣
cm = confusion_matrix(y_test, y_pred)
print("混淆矩陣:\n", cm)

# 計算準確率
accuracy = accuracy_score(y_test, y_pred)
print("準確率:", accuracy)

三、邏輯回歸在sklearn中的應用

1. API說明

在sklearn中,邏輯回歸演算法的API為:LogisticRegression。

2. 代碼示例

from sklearn.linear_model import LogisticRegression

# 創建邏輯回歸對象
classifier = LogisticRegression(random_state=0)

# 用訓練集訓練模型
classifier.fit(X_train, y_train)

# 對測試集做預測
y_pred = classifier.predict(X_test)

# 計算準確率
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print("準確率:", accuracy)

四、邏輯回歸的應用

1. 二分類問題

邏輯回歸常用於二分類問題,例如預測一個人會/不會購買某個商品、預測一個客戶可能/不可能違約等。

2. 多分類問題

邏輯回歸也可以應用於多分類問題。一種常用的方法是採用 One-vs-All(OvA)策略。即對於有 n 個類別的問題,訓練 n 個分類器,每個分類器分別將一個類別看作正例,其餘類別看作反例。最後,將這些分類器組合成一個大模型,再根據輸入的特徵進行分類。

3. 特徵工程

特徵工程是提高模型性能的重要步驟。通過對原始特徵的處理,可以提取出更有價值的特徵。例如,可以通過多項式擴展、歸一化、特徵選擇等方式來提高模型表現。

4. 模型優化

邏輯回歸模型的性能可以通過多種方式進行優化。例如,可以通過正則化、調整參數、使用Ensemble方法等方式來提高模型表現。

5. 實現案例:銀行貸款違約預測

銀行貸款違約預測是一個典型的二分類問題,可以使用邏輯回歸模型進行預測。我們可以使用已有的數據來訓練模型,從而預測哪些客戶可能違約。

首先,我們需要載入數據集,並對數據進行預處理。下面的代碼演示了如何對數據進行處理。

import pandas as pd
from sklearn.preprocessing import LabelEncoder

# 載入數據集
data = pd.read_csv("bank-full.csv", delimiter=";")
y = data["y"]
X = data.drop("y", axis=1)

# 類別型特徵編碼
categorical_features = ["job", "marital", "education", "default", "housing", "loan", "contact", "month", "poutcome"]
for feature in categorical_features:
    encoder = LabelEncoder()
    X[feature] = encoder.fit_transform(X[feature])

# 轉換啞變數
X = pd.get_dummies(X, columns=categorical_features)

# 將標籤 y 轉換為 0 和 1
y = (y == "yes").astype(int)

接著,我們可以將數據集劃分為訓練集和測試集,並使用邏輯回歸模型訓練和預測。下面的代碼演示了如何訓練和預測模型。

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

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

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

# 預測測試集
y_pred = model.predict(X_test)

# 計算準確率
accuracy = accuracy_score(y_test, y_pred)
print("準確率:", accuracy)

原創文章,作者:ILUJH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/369738.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ILUJH的頭像ILUJH
上一篇 2025-04-13 11:45
下一篇 2025-04-13 11:45

相關推薦

  • Java2D物理引擎簡介及應用

    本文將介紹Java2D物理引擎的基本概念、實現原理及應用案例,以及對應代碼示例。 一、物理引擎概述 物理引擎是一種計算機程序,用於模擬物理系統中的對象和其互動,如重力、碰撞、彈力等…

    編程 2025-04-29
  • Django框架:從簡介到項目實戰

    本文將從Django的介紹,以及如何搭建Django環境開始,逐步深入到Django模型、視圖、模板、表單,最後通過一個小型項目實戰,進行綜合性的應用,讓讀者獲得更深入的學習。 一…

    編程 2025-04-28
  • Python三體運動簡介

    本文將從多個方面詳細闡述Python三體運動,包括什麼是三體運動,三體運動的公式與原理,實現三體運動的Python代碼等內容。 一、什麼是三體運動? 三體運動是指三個天體相互作用所…

    編程 2025-04-27
  • Java中的殭屍進程簡介與解決方法

    本文將對Java中的殭屍進程進行詳細闡述,並給出幾種解決方法。 一、殭屍進程的概念 在操作系統中,進程是指正在執行的程序。當一個進程創建了一個子進程,而該子進程完成了任務卻沒有被父…

    編程 2025-04-27
  • PyTorch模塊簡介

    PyTorch是一個開源的機器學習框架,它基於Torch,是一個Python優先的深度學習框架,同時也支持C++,非常容易上手。PyTorch中的核心模塊是torch,提供一些很好…

    編程 2025-04-27
  • Python底層邏輯解析

    Python作為一種高級編程語言,越來越受到開發者的青睞。但是作為一名優秀的Python開發者,對Python底層的邏輯也需要有一定了解。本文將從多個方面詳細闡述Python底層邏…

    編程 2025-04-27
  • Python邏輯運算符優先順序

    本篇文章將從多個方面對Python邏輯運算符優先順序進行詳細闡述,包括優先順序規則、優先順序示例及代碼實現等內容。 一、優先順序規則 在Python中,邏輯運算符的優先順序從高到低依次為「n…

    編程 2025-04-27
  • Python操作DB文件簡介

    本文將從以下幾個方面詳細闡述如何使用Python操作DB文件: 創建和打開DB文件 執行SQL語句 讀取和寫入數據 關閉DB文件 一、創建和打開DB文件 Python內置了SQLi…

    編程 2025-04-27
  • Python寫Word模板簡介

    Python可以用來生成Word文檔,讓你可以自動化生成報表、合同、申請表等文檔。本文將從多個方面詳細介紹Python寫Word模板的方法和技巧。 一、Word模板的結構 要生成W…

    編程 2025-04-27
  • 邏輯回歸對自變數的要求

    邏輯回歸是一種常用的分類演算法,它通過訓練樣本數據來建立模型,並通過對新樣本的歸類來預測輸出結果。邏輯回歸對自變數有一定的要求,本文將從多個方面進行闡述。 一、變數的線性關係 邏輯回…

    編程 2025-04-27

發表回復

登錄後才能評論