用Python實現SVM搭建金融反詐模型(含調試運行)

1.概述

信用卡盜刷一般發生在持卡人信息被不法分子竊取后,復制卡片進行消費或信用卡被他人冒領后激活并消費等情況下。一旦發生信用卡盜刷,持卡人和銀行都會遭受一定的經濟損失。本節要運用支持向量機分類算法搭建一個金融反欺詐模型。

2.數據集

使用的數據集共有1000條客戶信用卡的交易數據。其中,有400個欺詐樣本,600個非欺詐樣本。數據集中變量的詳細描述如下表所示,表格中的“欺詐標簽”列為目標變量,若是盜刷信用卡產生的交易則標記為1,代表欺詐,正常交易則標記為0。剩下的字段為特征變量,只選取了5個特征變量,在實際中使用的特征變量遠很多,根據這些數據搭建支持向量機模型。

3、分析過程?

(1)數據讀取

首先通過pandas庫讀取數據,代碼如下:

import pandas as pd
df = pd.read_excel('信用卡交易數據.xlsx')
df.head()

通過打印df.head()查看表格的前5行,結果如下所示:

其中第1列“欺詐標簽”為目標變量y,其余5列為特征變量X,接下來我們將利用這些數據搭建金融反詐識別模型。?

(2)提取特征變量和目標變量

首先將特征變量和目標變量分別提取出來,代碼如下:

X = df.drop(columns='欺詐標簽') 
y = df['欺詐標簽']

(3)劃分訓練集和測試集

提取完特征變量和目標變量后,將數據劃分為訓練集和測試集,代碼如下:

# 從 sklearn 的 model_selection 模塊中導入 train_test_split 函數,用于將數據集劃分為訓練集和測試集
from sklearn.model_selection import train_test_split# 將數據集劃分為訓練集和測試集
# X_train 存儲訓練集的特征變量,X_test 存儲測試集的特征變量
# y_train 存儲訓練集的目標變量,y_test 存儲測試集的目標變量
# X 和 y 是之前代碼中提取的特征變量和目標變量
# test_size=0.2 表示將 20% 的數據劃分為測試集,80% 的數據劃分為訓練集
# stratify=y 確保劃分后的訓練集和測試集在目標變量 y 的不同類別上的比例與原始數據中的比例相同
# random_state=123 確保劃分結果的可重復性
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y,random_state=123)

①test_size=0.2表示我們希望將數據集的20%作為測試集,相應地,80% 的數據將作為訓練集。

②stratify=y是一個重要的參數,當y是分類變量時,使用該參數可以確保劃分后的訓練集和測試集在不同類別上的比例與原始數據集的比例保持一致,這對于分類任務非常重要,避免某些類別在測試集中的比例失衡。

③random_state=123是一個隨機數種子,它確保每次運行代碼時,劃分的結果是一致的。如果不設置這個參數,每次運行代碼得到的訓練集和測試集可能會有所不同,因為劃分過程中涉及隨機采樣。設置該參數可以使結果可重復,方便代碼的調試和結果的比較。

(4)模型構建

劃分好訓練集和測試集之后,導入sklearn中的SVM工具包,核函數采用線性核函數進行模型訓練,代碼如下:

# 從 sklearn 的 svm 模塊中導入 SVC 類,SVC 是支持向量機分類器
from sklearn.svm import SVC # 創建一個 SVC 模型的實例,使用線性核函數
# kernel='linear' 表示使用線性核函數,適用于線性可分的數據集
svm_model = SVC(kernel='linear') # 使用訓練集的特征變量 X_train 和目標變量 y_train 對 SVC 模型進行訓練
svm_model.fit(X_train, y_train)

①from sklearn.svm import SVC:從scikit-learn的svm(支持向量機)模塊中導入 SVC 類。SVC 是 Support Vector Classifier 的縮寫,是支持向量機分類器,它可以用于分類任務。

②fit方法是scikit-learn中模型的核心訓練方法,它將學習如何根據輸入的訓練數據來預測目標變量。對于SVC模型,它會找到最優的超平面(在使用線性核函數的情況下)或在高維空間中找到最優的決策邊界,以將不同類別的數據分開。

(5)模型評估與預測

想要查看測試集的預測準確度,可以使用accuracy_score()函數,如下代碼:

# 使用訓練好的 svm_model 對測試集的特征變量 X_test 進行預測,得到預測結果 y_pred
y_pred = svm_model.predict(X_test)# 從 sklearn 的 metrics 模塊中導入 accuracy_score 函數,用于計算預測的準確率
from sklearn.metrics import accuracy_score# 使用 accuracy_score 函數計算預測結果 y_pred 和真實結果 y_test 的準確率
score = accuracy_score(y_pred, y_test)# 打印出準確率的得分
print(score)

將score打印輸出,結果為0.785,也就是說,模型對整個測試集的預測準確度為78.5%。 對于分類模型,需要關注查準率和查全率,Python可以通過如下代碼計算每一個類別的查準率和查全率:

# 使用 svm_model 的 score 方法計算在測試集上的準確率
svm_model.score(X_test, y_test)# 從 sklearn 的 metrics 模塊中導入 classification_report 函數,用于生成分類報告
from sklearn.metrics import classification_report# 使用 classification_report 函數對測試集的真實結果 y_test 和預測結果 y_pred 生成分類報告并打印
print(classification_report(y_test, y_pred))

?可見對于判斷是否欺詐,模型的 precision(查準率)為0.82,查準率比較高,但是recall(查全率)為0.59,命中率不夠高,表示有一些實際是欺詐的客戶模型沒能識別出來,遺漏了。因此,可以再調節模型的參數,以獲得更優的預測效果。

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

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

相關文章

HunyuanVideo 文生視頻模型實踐

HunyuanVideo 文生視頻模型實踐 flyfish 運行 HunyuanVideo 模型使用文本生成視頻的推薦配置(batch size 1): 模型分辨率(height/width/frame)峰值顯存HunyuanVideo720px1280px129f60GHunyuanVideo544px960px129f45G 本項目適用于使用 N…

第6章 ThreadGroup詳細講解(Java高并發編程詳解:多線程與系統設計)

1.ThreadGroup 與 Thread 在Java程序中, 默認情況下, 新的線程都會被加入到main線程所在的group中, main線程的group名字同線程名。如同線程存在父子關系一樣, Thread Group同樣也存在父子關系。圖6-1就很好地說明了父子thread、父…

nginx常用配置 (含負載均衡、反向代理、限流、Gzip壓縮、圖片防盜鏈 等示例)

nginx的配置文件通常在 /etc/nginx/nginx.conf , /etc/nginx/conf.d/*.conf 中, 一般直接 改 conf.d目錄下的 default.conf文件, 然后 先檢測配置文件是否有錯誤 nginx -t 再重新加載配置文件 或 重啟nginx,命令如下 nginx -s reload 或…

Python編程與在線醫療平臺數據挖掘與數據應用交互性研究

一、引言 1.1 研究背景與意義 在互聯網技術飛速發展的當下,在線醫療平臺如雨后春筍般涌現,為人們的就醫方式帶來了重大變革。這些平臺打破了傳統醫療服務在時間和空間上的限制,使患者能夠更加便捷地獲取醫療資源。據相關報告顯示,中國基于互聯網的醫療保健行業已進入新的…

Linux網絡_套接字_UDP網絡_TCP網絡

一.UDP網絡 1.socket()創建套接字 #include<sys/socket.h> int socket(int domain, int type, int protocol);domain (地址族): AF_INET網絡 AF_UNIX本地 AF_INET&#xff1a;IPv4 地址族&#xff0c;適用于 IPv4 協議。用于網絡通信AF_INET6&#xff1a;IPv6 地址族&a…

1 行命令引發的 Go 應用崩潰

一、前言 不久前&#xff0c;阿里云 ARMS 團隊、編譯器團隊、MSE 團隊攜手合作&#xff0c;共同發布并開源了 Go 語言的編譯時自動插樁技術。該技術以其零侵入的特性&#xff0c;為 Go 應用提供了與 Java 監控能力相媲美的解決方案。開發者只需將 go build 替換為新編譯命令 o…

R語言的并發編程

R語言的并發編程 引言 在現代計算中&#xff0c;如何有效地利用計算資源進行數據處理和分析已成為一個重要的研究方向。尤其在大數據時代&#xff0c;數據量的急劇增加讓單線程處理方式顯得力不從心。為了解決這一問題&#xff0c;各種編程語言都開展了并發編程的研究和應用。…

Flink(十):DataStream API (七) 狀態

1. 狀態的定義 在 Apache Flink 中&#xff0c;狀態&#xff08;State&#xff09; 是指在數據流處理過程中需要持久化和追蹤的中間數據&#xff0c;它允許 Flink 在處理事件時保持上下文信息&#xff0c;從而支持復雜的流式計算任務&#xff0c;如聚合、窗口計算、聯接等。狀…

C#項目生成時提示缺少引用

問題描述 剛從git或svn拉取下來的C#項目&#xff0c;在VS生成時提示缺少引用 解決方案 1、從“管理NuGet程序包”中下載并安裝缺少的引用&#xff0c;如果引用較多逐個下載安裝會比較麻煩&#xff0c;建議采用下面第2種方案處理 2、通過命令對所有缺少引用進行安裝 &#…

EAMM: 通過基于音頻的情感感知運動模型實現的一次性情感對話人臉合成

EAMM: 通過基于音頻的情感感知運動模型實現的一次性情感對話人臉合成 1所有的材料都可以在EAMM: One-Shot Emotional Talking Face via Audio-Based Emotion-Aware Motion Model網站上找到。 摘要 盡管音頻驅動的對話人臉生成技術已取得顯著進展&#xff0c;但現有方法要么忽…

BeanFactory 是什么?它與 ApplicationContext 有什么區別?

談到Spring&#xff0c;那勢必要講講容器 BeanFactory 和 ApplicationContext。 BeanFactory是什么&#xff1f; BeanFactory&#xff0c;其實就是 Spring 容器&#xff0c;用于管理和操作 Spring 容器中的 Bean。可能此時又有初學的小伙伴會問&#xff1a;Bean 是什么&#x…

【深度學習】Huber Loss詳解

文章目錄 1. Huber Loss 原理詳解2. Pytorch 代碼詳解3.與 MSELoss、MAELoss 區別及各自優缺點3.1 MSELoss 均方誤差損失3.2 MAELoss 平均絕對誤差損失3.3 Huber Loss 4. 總結4.1 優化平滑4.2 梯度較好4.3 為什么說 MSE 是平滑的 1. Huber Loss 原理詳解 Huber Loss 是一種結合…

python實現pdf轉word和excel

一、引言   在辦公中&#xff0c;我們經常遇收到pdf文件格式&#xff0c;因為pdf格式文件不易修改&#xff0c;當我們需要編輯這些pdf文件時&#xff0c;經常需要開通會員或收費功能才能使用編輯功能。今天&#xff0c;我要和大家分享的&#xff0c;是如何使用python編程實現…

【PyCharm】連接Jupyter Notebook

【PyCharm】相關鏈接 【PyCharm】連接 Git【PyCharm】連接Jupyter Notebook【PyCharm】快捷鍵使用【PyCharm】遠程連接Linux服務器【PyCharm】設置為中文界面 【PyCharm】連接Jupyter Notebook PyCharm連接Jupyter Notebook的過程可以根據不同的需求分為 本地連接 和 遠程連…

Java鎖 公平鎖和非公平鎖 ReentrantLock() 深入源碼解析

賣票問題 我們現在有五個售票員 五個線程分別賣票 賣票 ReentrantLock(); 運行后全是 a 對象獲取 非公平鎖缺點之一 容易出現鎖饑餓 默認是使用的非公平鎖 也可以傳入一個 true 參數 使其變成公平鎖 生活中排隊講求先來后到 視為公平 程序中的公平性也是符合請求鎖的絕對…

「劉一哥GIS」系列專欄《GRASS GIS零基礎入門實驗教程(配套案例數據)》專欄上線了

「劉一哥GIS」系列專欄《GRASS GIS零基礎入門實驗教程》全新上線了&#xff0c;歡迎廣大GISer朋友關注&#xff0c;一起探索GIS奧秘&#xff0c;分享GIS價值&#xff01; 本專欄以實戰案例的形式&#xff0c;深入淺出地介紹了GRASS GIS的基本使用方法&#xff0c;用一個個實例講…

企業級NoSQL數據庫Redis

1.瀏覽器緩存過期機制 1.1 最后修改時間 last-modified 瀏覽器緩存機制是優化網頁加載速度和減少服務器負載的重要手段。以下是關于瀏覽器緩存過期機制、Last-Modified 和 ETag 的詳細講解&#xff1a; 一、Last-Modified 頭部 定義&#xff1a;Last-Modified 表示服務器上資源…

使用Flask和Pydantic實現參數驗證

使用Flask和Pydantic實現參數驗證 1 簡介 Pydantic是一個用于數據驗證和解析的 Python 庫&#xff0c;版本2的性能有較大提升&#xff0c;很多框架使用Pydantic做數據校驗。 # 官方參考文檔 https://docs.pydantic.dev/latest/# Github地址 https://github.com/pydantic/pyd…

ScratchLLMStepByStep:訓練自己的Tokenizer

1. 引言 分詞器是每個大語言模型必不可少的組件&#xff0c;但每個大語言模型的分詞器幾乎都不相同。如果要訓練自己的分詞器&#xff0c;可以使用huggingface的tokenizers框架&#xff0c;tokenizers包含以下主要組件&#xff1a; Tokenizer: 分詞器的核心組件&#xff0c;定…

C# OpenCvSharp 部署3D人臉重建3DDFA-V3

目錄 說明 效果 模型信息 landmark.onnx net_recon.onnx net_recon_mbnet.onnx retinaface_resnet50.onnx 項目 代碼 下載 參考 C# OpenCvSharp 部署3D人臉重建3DDFA-V3 說明 地址&#xff1a;https://github.com/wang-zidu/3DDFA-V3 3DDFA_V3 uses the geometri…