機器學習——邏輯回歸(LogisticRegression)實戰案例:信用卡欺詐檢測數據集

使用邏輯回歸識別 信用卡欺詐行為:基于creditcard.csv的實戰與評估分析


項目背景

在金融行業中,信用卡欺詐檢測是一項關鍵任務。欺詐交易在整個交易中占比極低,導致數據極度不平衡。本案例通過經典數據集 creditcard.csv,構建邏輯回歸模型,并使用多個評價指標(如準確率、召回率、F1 等)來全面評估模型性能。


數據介紹

信用卡欺詐檢測數據集?creditcard.csv

  • 數據來源Kaggle Credit Card Fraud Detectionhttps://www.kaggle.com/datasets/mlg-ulb/creditcardfraud

  • 樣本總數:284,807 條

  • 特征數:30(28個匿名特征 + 金額 Amount + 時間 Time

  • 目標變量Class(0=正常交易,1=欺詐交易)

?? ?


完整代碼解析

import pandas as pd  # 用于數據處理和分析
from sklearn.linear_model import LogisticRegression  # 導入邏輯回歸模型
from sklearn.model_selection import train_test_split  # 用于拆分訓練集和測試集
from sklearn.preprocessing import StandardScaler  # 用于數據標準化處理# 讀取信用卡交易數據
data = pd.read_csv('creditcard.csv')# 初始化標準化器,將數據轉換為均值為0、標準差為1的分布
scaler = StandardScaler()
# 對Amount列進行標準化處理,并覆蓋原始數據
data['Amount'] = scaler.fit_transform(data[['Amount']])# 準備特征數據X(排除時間和目標變量)和目標變量y(欺詐標簽)
X = data.drop(["Time","Class"], axis=1)
y = data.Class# 將數據拆分為訓練集(70%)和測試集(30%),設置隨機種子保證結果可復現
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=100)# 初始化邏輯回歸模型并在訓練集上訓練
model = LogisticRegression()
model.fit(X_train, y_train)# 使用訓練好的模型在測試集上進行預測
y_pred = model.predict(X_test)
# 計算并打印模型在測試集上的準確率
accuracy = model.score(X_test, y_test)
print(f'準確率:{accuracy}')# 導入評估指標庫并生成詳細的分類報告
from sklearn import metrics
print('分類報告:')
print(metrics.classification_report(y_test, y_pred))# 統計目標變量Class中各類別的樣本數量(查看數據分布,尤其是欺詐與正常交易的比例)
labels_count = pd.value_counts(data['Class'])
print(labels_count)

模型評估指標詳解(來自sklearn.metrics.classification_report

在欺詐檢測中,“準確率”往往是不可靠的。因為如果模型預測全為 0(正常交易),準確率仍然可能達到 99.9%。

因此,我們重點關注如下指標:

指標名稱說明
Precision(精確率)被預測為正類的條目中? 真正是正類的比例。衡量“預測為欺詐中真正欺詐”的比例
Recall(召回率)實際為正類的條目中? 被預測是正類的比例。(檢出率)
F1-score精確率和召回率的調和平均,平衡二者
Support每個類在測試集中出現的樣本數。如85301為測試集(284,807條的30%)中的“0”類

示例輸出:


重點分析 1 類(欺詐交易)

  • Precision = 0.77:誤報很多,意味著模型判定為欺詐的交易中,存在不少誤判情況。

  • Recall = 0.65:召回率并不好,說明很多欺詐并沒有被識別。

  • F1-score = 0.70:它綜合考慮了精確率(Precision)召回率(Recall),用于衡量在不平衡數據集中模型對“少數類”的綜合表現。

  • support: 85301表示測試集中0的條數,142表示測試集中1的條數

之所以預測結果并不好,是因為數據的極度不平衡:

28萬條 的 正常交易

492條 的?欺詐交易


模型優化建議

方法原理

下采樣(Undersampling)
減少多數類樣本,使正負樣本比例接近,降低模型對多數類的偏好。適用于數據量較大的場景,但可能丟失信息。
過采樣(Oversampling)通過復制少數類或生成合成樣本(如SMOTE)來平衡數據,提高模型對少數類的識別能力。適用于數據稀缺時。
調整閾值(threshold)將默認的分類閾值(通常為0.5)向下調整,使模型更容易預測為“欺詐”類,從而提高 Recall,適用于對漏檢特別敏感的任務
調整類別權重(class_weight)在訓練過程中對少數類樣本給予更高權重,引導模型更關注少數類。可通過設置 class_weight='balanced' 實現,適用于多數 sklearn 分類器。

此文章同一專欄內包含有1.下采樣、2.過采樣、3.調整閾值、4.LogisticRegression()的參數

class_weight='balanced'即為LogisticRegression()的參數


總結

邏輯回歸雖為線性模型,但在欺詐檢測中依然具備一定實用性。通過合理的數據預處理、參數設置(如 class_weight='balanced')、指標解讀,可以使模型在真實場景中更可靠。評價指標遠比準確率更重要,特別是在處理不平衡分類問題時。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91519.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91519.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91519.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Helm在Kubernetes中的應用部署指南與案例解析

在上一章節中,我們已經介紹了Helm的部署和基本使用方法。本章將通過實際案例,詳細演示如何使用Helm在Kubernetes集群中部署應用。一、Helm 核心價值解析優勢解決的問題類比傳統方式應用模板化重復編寫 YAML 文件手動編寫 20 資源清單文件版本控制缺乏部署…

如何最簡單、通俗地理解線性回歸算法? 線性回歸模型在非線性數據上擬合效果不佳,如何在保持模型簡單性的同時改進擬合能力?

線性回歸作為統計學與機器學習領域中最基礎且最重要的算法之一,其應用廣泛且深遠。它不僅是回歸分析的入門方法,更是后續復雜模型構建的重要理論基礎。理解線性回歸算法的本質,既有助于提升數據分析的能力,也能為掌握更復雜的機器…

藍橋杯----超聲波

(一)、超聲波1、原理(圖 一)發送信號階段:單片機通過翻轉發送的引腳P1^0,發送8個40MHZ的方波,此時開始計時。等待接收信號:通過單片機的接收引腳P1^1檢測,未接收到信號時…

Java學習-運算符

1.在代碼中,如果有小數參與計算,結果有可能不精確。2.整數參與計算,結果只能是整數。3.數字進行運算時,數據類型不一樣不能運算,需要轉成一樣的,才能運算。(1)隱式轉換(自…

一句話指令實現“2D轉3D”、“圖片提取線稿”

你是否曾為一張2D圖片無法完美展示3D效果而遺憾?是否曾因需要將手繪草圖轉為清晰線稿而耗時費力?這些曾讓設計師、電商賣家、內容創作者頭疼的難題,如今只需一句話指令,即可迎刃而解。一、案例一:2D圖片→3D模型痛點場…

層次聚類:無需“猜”K值,如何讓數據自己畫出“家族圖譜”?

層次聚類:無需“猜”K值,如何讓數據自己畫出“家族圖譜”?👋 大家好,我是小瑞瑞!歡迎回到我的專欄! 在上一期,我們學會了強大的K-Means算法,但它也給我們留下了一個“靈魂…

數據結構:鏈表(Linked List)

目錄 結構推導 回到最原始的問題 —— 我們如何存數據? 第二步:我們來看看數組的限制 第三步:那我們該怎么做呢? 第四步:我們推導鏈表的數據結構 結構講解 什么是鏈表? 什么是節點? …

[RK3566-Android11] U盤頻繁快速插拔識別問題

問題描述 做老化測試時,在使用U盤頻繁快速插拔的情況下,SDCard目錄會突然被Kill掉,然后又重新掛載上,這會導致系統及APP的數據因為讀寫異常,從而界面卡死正常U盤插拔不應該導致內部存儲卸載解決方案: SDK根…

【Golang】Go語言Map數據類型

Go語言Map數據類型 文章目錄Go語言Map數據類型一、Map1.1.1、map定義1.1.2、map的基本使用1.1.3、判斷某個鍵是否存在1.1.4、map的遍歷1.1.5、使用delete()函數刪除鍵值對1.1.6、按照指定順序遍歷map1.1.7、元素為map類型的切片1.1.8、值為切片類型的map一、Map map是一種無序…

Orange的運維學習日記--23.Linux計劃任務詳解

Orange的運維學習日記–23.Linux計劃任務詳解 文章目錄Orange的運維學習日記--23.Linux計劃任務詳解一次性計劃任務atd 服務at 命令基本語法交互式示例腳本文件示例timespec 格式示例查看與管理任務查看當前隊列查看任務詳細內容刪除任務用戶權限控制用戶周期性計劃任務查看任務…

Ubuntu 24.04.2 LTS 安裝mysql8.0.36保姆級教程(從安裝到遠程連接)

目錄 前言 一、系統準備 二、安裝 MySQL 8.0.36 1. 查看可用版本 2.如果沒有對應版本則需要手動下載mysql-apt-config(有則跳過) 2.1下圖是mysql-apt-config各版本對應的mysql版本 2.2下載mysql apt repository 2.3安裝 MySQL APT Repository 包 …

【LLM】講清楚MLA原理

需要你對MHA、MQA、GQA有足夠了解,相信本文能幫助你對MLA有新的認識。 本文內容都來自https://www.youtube.com/watch?v0VLAoVGf_74,如果閱讀本文出現問題,建議直接去看一遍。 按照Deepseek設定一些參數值:輸入token長度n10&…

谷歌采用 Ligero 構建其 ZK 技術棧

1. 引言 前序博客有: Ligero 和 Ligetron 中的 MPC 和 ZKLigetron:Nim Network開發的針對AI的zkVMLigetron:基于MPC-In-The-Head范式的zkVM簡介 在隱私保護身份驗證領域邁出重要一步,谷歌最近宣布 將零知識證明(ZKP…

Flutter渲染引擎:Impeller和Skia

一、Impeller 渲染引擎的發布時間Impeller 是 Flutter 團隊為解決 Skia 引擎在移動端(尤其是 iOS 平臺)的性能問題而開發的全新渲染引擎,其發展歷程如下:首次公開:2021 年 Google I/O 大會上首次提及,作為 …

網絡編程-加密算法

目錄 一.網絡編程基礎 1. 概述 2. IP地址 3. 域名 4. 網絡模型 5. 常用協議 6. 小結 二.TCP編程 1. 什么是Socket? 2. 服務器端 3. 客戶端 4. Socket流 5. 小結 三.UDP編程 1. 概述 2. 服務器端 3. 客戶端 4. 小結 案例: 四.加密算法 …

【網絡工程師軟考版】網絡安全

任何形式的網絡服務都會導致安全方面的風險,問題是如何將風險降到最低程度,目前的網絡安全措施有數據加密、數字簽名、身份認證、防火墻、特征過濾等。所涉內容:1、網絡安全基礎2、加密技術與哈希算法3、數字簽名4、數字證書5、VPN技術6、防火…

深入淺出設計模式——創建型模式之建造者模式 Builder

文章目錄建造者模式簡介建造者模式結構建造者模式代碼實例定義產品類House定義建造者定義抽象建造者AbstractBuilder定義具體建造者定義指揮者客戶端代碼示例運行結果建造者模式總結代碼倉庫建一棟房子總共分幾步?建造者模式告訴你答案!“把大象裝冰箱&a…

OpenVLA: 論文閱讀 -- 開源視覺-語言-行動模型

更多內容:XiaoJ的知識星球 目錄OpenVLA:開源視覺-語言-行動模型1. 介紹2. 相關工作1)視覺條件語言模型(Visually-Conditioned Language Models)2)通用型機器人策略(Generalist Robot Policies&a…

JavaWeb(蒼穹外賣)--學習筆記15(分頁查詢PageHelper)

前言 終于開始學習做項目了,本篇文章是學習B站黑馬程序員蒼穹外賣的學習筆記📑。我的學習路線是Java基礎語法-JavaWeb-做項目,管理端的功能學習完之后,就進入到了用戶端微信小程序的開發,這篇文章來看看分頁查詢&#…

金融專題|某跨境支付機構:以榫卯企業云平臺 VPC 功能保障業務主體安全

作者:SmartX 金融團隊 金融機構在信息化建設時面臨諸多數據合規要求,例如:不同業務區域之間互相隔離、數據庫僅能由關聯的應用服務器訪問、僅有特定的服務器允許被外網訪問等。對此,某跨境支付機構以 SmartX 榫卯企業云平臺構建私…