在大數據和機器學習蓬勃發展的時代,信用卡欺詐檢測成為了保障金融安全的重要環節。邏輯回歸作為一種經典的機器學習算法,在這一領域發揮著關鍵作用。本文將通過一段完整的Python代碼,詳細解析邏輯回歸在信用卡欺詐檢測中的具體應用過程,帶大家深入理解其原理與實踐。
數據讀取與預處理
首先,我們使用pandas
庫讀取信用卡交易數據。代碼data = pd.read_csv(r"./creditcard.csv")
將存儲在本地的creditcard.csv
文件讀取到data
變量中,隨后通過print(data.head())
查看數據的前5行,初步了解數據的結構和內容。
import pandas as pddata = pd.read_csv(r"./creditcard.csv")
print(data.head())#前5的數據
數據預處理環節至關重要。對于Amount
列數據,我們采用StandardScaler
進行Z標準化處理,目的是使數據具有零均值和單位方差,消除不同特征之間的量綱差異,提升模型的訓練效果。代碼如下:
from sklearn.preprocessing import StandardScaler#z標準化的函數scaler = StandardScaler()#初始化
a = data[['Amount']]
b = data['Amount']
data['Amount'] = scaler.fit_transform(data[['Amount']])
print(data.head())#打印這個表格的前5行
同時,考慮到Time
列在本次分析中可能對模型幫助不大,使用data = data.drop(['Time'],axis=1)
將其刪除,簡化數據結構。
數據可視化分析
為了直觀了解正負樣本的分布情況,我們使用matplotlib
和pylab
庫進行數據可視化。通過pd.value_counts(data['Class'])
統計Class
列中每類的個數,再繪制柱狀圖展示正負例樣本數。這一步有助于我們對數據的不均衡性有更清晰的認識,為后續模型構建提供參考。
import matplotlib.pyplot as plt
from pylab import mpl
#matplotlib不能顯示中文,借助于pylab實現中文顯示mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']#顯示中文
mpl.rcParams['axes.unicode_minus'] = False
labels_count = pd.value_counts(data['Class'])#統計data['Class']中每類的個數
print(labels_count)
plt.title("正負例樣本數")
plt.xlabel("類別")
plt.ylabel("頻數")
labels_count.plot(kind='bar')
plt.show()
模型構建與訓練
接下來進入核心環節——邏輯回歸模型的構建與訓練。我們使用train_test_split
函數將原始數據集劃分為訓練集和測試集,其中測試集占比30%,并通過設置random_state
確保每次劃分的數據集相同,便于模型的評估和比較。
from sklearn.model_selection import train_test_split#專門用來對數據集進行切分的函數
#對原始數據集進行切分
X_whole = data.drop('Class',axis=1)#刪除class列,其余數據作為特征集
y_whole = data.Class #class列作為標簽(label標注)
x_train_w, x_test_w, y_train_w, y_test_w = \
train_test_split(X_whole,y_whole,test_size = 0.3, random_state = 1000)
#隨機種子可以保證每次抽的數據都是一樣能的
然后實例化LogisticRegression
類,并設置超參數C=0.01
,創建邏輯回歸模型對象lr
。通過lr.fit(x_train_w,y_train_w)
將訓練數據傳入模型進行訓練,此時訓練好的模型參數將自動保存到lr
變量中。
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(C=0.01)#先調用這個類創建一個邏輯回歸對象lr
lr.fit(x_train_w,y_train_w)#傳入訓練數據,之后的模型就會自動保存到變量lr
模型評估
模型訓練完成后,我們使用測試集對其進行評估。通過lr.predict(x_test_w)
對測試集數據進行預測,得到預測結果test_predicted
;再利用lr.score(x_test_w,y_test_w)
計算模型在測試集上的準確率,衡量模型的整體性能。
test_predicted = lr.predict(x_test_w)#測試集
result = lr.score(x_test_w,y_test_w)#準確率
為了更全面地評估模型的分類效果,我們引入classification_report
函數,它能提供精確率、召回率、F1值等詳細的分類指標,幫助我們深入分析模型在正負樣本分類上的表現。
from sklearn import metrics
print(metrics.classification_report(y_test_w, test_predicted))
運行結果
- List item
總結與展望
通過以上步驟,我們成功地將邏輯回歸算法應用于信用卡欺詐檢測任務中,從數據讀取、預處理,到模型構建、訓練與評估,完整地展示了一個機器學習項目的開發流程。邏輯回歸憑借其簡單易懂、可解釋性強的特點,在金融風控領域有著廣泛的應用。
然而,實際應用中可能存在數據不均衡、特征優化等問題,后續可以嘗試采用過采樣、欠采樣等技術解決數據不均衡問題,或者運用特征工程方法挖掘更有效的特征,進一步提升模型的性能。希望本文能為大家在邏輯回歸的學習和實踐中提供幫助,也歡迎大家在評論區交流探討更多優化思路和應用場景。
上述博客從代碼出發,講解了邏輯回歸的應用全流程。若你覺得內容需要增減,或是想對某些部分深入探討,歡迎和我說說。
這篇博客圍繞代碼全流程解析了邏輯回歸的應用。若你想對模型優化、代碼細節等方面展開更多探討,歡迎隨時分享你的想法。