当前位置: 首页 > news >正文

逻辑回归在信用卡欺诈检测中的实战应用

在大数据和机器学习蓬勃发展的时代,信用卡欺诈检测成为了保障金融安全的重要环节。逻辑回归作为一种经典的机器学习算法,在这一领域发挥着关键作用。本文将通过一段完整的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)将其删除,简化数据结构。

数据可视化分析

为了直观了解正负样本的分布情况,我们使用matplotlibpylab库进行数据可视化。通过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

在这里插入图片描述

总结与展望

通过以上步骤,我们成功地将逻辑回归算法应用于信用卡欺诈检测任务中,从数据读取、预处理,到模型构建、训练与评估,完整地展示了一个机器学习项目的开发流程。逻辑回归凭借其简单易懂、可解释性强的特点,在金融风控领域有着广泛的应用。

然而,实际应用中可能存在数据不均衡、特征优化等问题,后续可以尝试采用过采样、欠采样等技术解决数据不均衡问题,或者运用特征工程方法挖掘更有效的特征,进一步提升模型的性能。希望本文能为大家在逻辑回归的学习和实践中提供帮助,也欢迎大家在评论区交流探讨更多优化思路和应用场景。

上述博客从代码出发,讲解了逻辑回归的应用全流程。若你觉得内容需要增减,或是想对某些部分深入探讨,欢迎和我说说。

这篇博客围绕代码全流程解析了逻辑回归的应用。若你想对模型优化、代码细节等方面展开更多探讨,欢迎随时分享你的想法。

相关文章:

  • Missashe考研日记-day31
  • 【上海大学数据库原理实验报告】MySQL基础操作
  • OpenCV 4.7企业级开发实战:从图像处理到目标检测的全方位指南
  • Web开发-JavaEE应用SpringBoot栈模版注入ThymeleafFreemarkerVelocity
  • Spring AI应用系列——基于OpenTelemetry实现大模型调用的可观测性实践
  • 益鑫通汽车连接器可替代Molex,JST
  • Axure疑难杂症:全局变量跨页面赋值、中继器交互(玩转全局变量)
  • 【Axure教程】增删改饼图
  • python实战项目67:空气质量在线检测平台js逆向
  • Neo4j多关系或多路径
  • 高并发内存池(五):性能测试与性能优化
  • 5.运输层
  • 使用skywalking进行go的接口监控和报警
  • Galini AI 技术实现方案及 GitHub 开源库推荐
  • EchoMimic 阿里开源数字人项目的复现过程
  • Vue 项目中运行 `npm run dev` 时发生的过程
  • 【优选算法 | 前缀和】前缀和算法:高效解决区间求和问题的关键
  • VR汽车线束:汽车制造的新变革
  • 改进系列(10):基于SwinTransformer+CBAM+多尺度特征融合+FocalLoss改进:自动驾驶地面路况识别
  • 【Bootstrap V4系列】学习入门教程之 加载必要文件和入门模板
  • 五部门:开展新就业形态劳动者劳动权益保障水平提升专项行动
  • 五一去哪儿| 追着花期去旅行,“赏花经济”绽放文旅新活力
  • 4月译著联合书单|心爱之物:热爱如何联结并塑造我们
  • 事关广大农民利益,农村集体经济组织法5月1日起施行
  • 解密62个“千亿县”:强者恒强,新兴产业助新晋县崛起
  • 浦发银行一季度净利175.98亿增1.02%,不良率微降