常见的数据分析用例 —— 信用卡交易欺诈检测

引言

数据分析在银行中的应用有如下:
投资风险分析
客户终身价值预测
客户细分
客户流失率预测
个性化营销
客户情绪分析
虚拟助理和聊天机器人
……
这里是一个常见的数据分析用例

欺诈检测是为识别和防止欺诈活动以及财务损失而采取的一种主动措施
一般的做法有:

  • 统计学:统计参数计算、回归、概率分布、数据匹配;
  • 人工智能:数据挖掘、机器学习、深度学习

机器学习是欺诈检测的重要支柱,其工具包提供了两种方法:

  • 监督方法:K-近邻、逻辑回归、支持向量机、决策树、随机森林、时间序列分析、神经网络等。
  • 无监督方法:聚类分析、链接分析、自组织地图、主成分分析、异常识别等。

目前没有通用的机器学习算法用于欺诈检测。相反,对于现实世界的数据科学用例,通常会选择几种方法,通过测试比较,选择最佳的。

数据集

Credit Card Fraud Detection | Kaggle数据集:
https://www.kaggle.com/mlg-ulb/creditcardfraud

该数据集是Kaggle信用卡欺诈检测数据集的一个修改样本,持卡人拥有信用卡的交易情况

下载以后保存在Jupyter notebook默认目录下
在这里插入图片描述

分析

1. 读入数据并快速浏览

import pandas as pd

creditcard_data = pd.read_csv('creditcard.csv', index_col=0)
print(creditcard_data.info())
print('\n')
pd.options.display.max_columns = len(creditcard_data)
print(creditcard_data.head(3))

结果如下:

<class 'pandas.core.frame.DataFrame'>
Index: 284807 entries, 0.0 to 172792.0
Data columns (total 30 columns):
 #   Column  Non-Null Count   Dtype  
---  ------  --------------   -----  
 0   V1      284807 non-null  float64
 1   V2      284807 non-null  float64
 2   V3      284807 non-null  float64
 3   V4      284807 non-null  float64
 4   V5      284807 non-null  float64
 5   V6      284807 non-null  float64
 6   V7      284807 non-null  float64
 7   V8      284807 non-null  float64
 8   V9      284807 non-null  float64
 9   V10     284807 non-null  float64
 10  V11     284807 non-null  float64
 11  V12     284807 non-null  float64
 12  V13     284807 non-null  float64
 13  V14     284807 non-null  float64
 14  V15     284807 non-null  float64
 15  V16     284807 non-null  float64
 16  V17     284807 non-null  float64
 17  V18     284807 non-null  float64
 18  V19     284807 non-null  float64
 19  V20     284807 non-null  float64
 20  V21     284807 non-null  float64
 21  V22     284807 non-null  float64
 22  V23     284807 non-null  float64
 23  V24     284807 non-null  float64
 24  V25     284807 non-null  float64
 25  V26     284807 non-null  float64
 26  V27     284807 non-null  float64
 27  V28     284807 non-null  float64
 28  Amount  284807 non-null  float64
 29  Class   284807 non-null  int64  
dtypes: float64(29), int64(1)
memory usage: 67.4 MB
None


            V1        V2        V3        V4        V5        V6        V7  \
Time                                                                         
0.0  -1.359807 -0.072781  2.536347  1.378155 -0.338321  0.462388  0.239599   
0.0   1.191857  0.266151  0.166480  0.448154  0.060018 -0.082361 -0.078803   
1.0  -1.358354 -1.340163  1.773209  0.379780 -0.503198  1.800499  0.791461   

            V8        V9       V10       V11       V12       V13       V14  \
Time                                                                         
0.0   0.098698  0.363787  0.090794 -0.551600 -0.617801 -0.991390 -0.311169   
0.0   0.085102 -0.255425 -0.166974  1.612727  1.065235  0.489095 -0.143772   
1.0   0.247676 -1.514654  0.207643  0.624501  0.066084  0.717293 -0.165946   

           V15       V16       V17       V18       V19       V20       V21  \
Time                                                                         
0.0   1.468177 -0.470401  0.207971  0.025791  0.403993  0.251412 -0.018307   
0.0   0.635558  0.463917 -0.114805 -0.183361 -0.145783 -0.069083 -0.225775   
1.0   2.345865 -2.890083  1.109969 -0.121359 -2.261857  0.524980  0.247998   

           V22       V23       V24       V25       V26       V27       V28  \
Time                                                                         
0.0   0.277838 -0.110474  0.066928  0.128539 -0.189115  0.133558 -0.021053   
0.0  -0.638672  0.101288 -0.339846  0.167170  0.125895 -0.008983  0.014724   
1.0   0.771679  0.909412 -0.689281 -0.327642 -0.139097 -0.055353 -0.059752   

      Amount  Class  
Time                 
0.0   149.62      0  
0.0     2.69      0  
1.0   378.66      0  

这个数据集共有284807条记录。
数据集包含30个列,其中29个列是float64类型(浮点数),1个列是int64类型(整数)。
每一列的数据都是非空的(没有缺失值)。

通过creditcard_data.head(3),我们查看数据集的前3行:
Time:表示交易时间。
V1 到 V28:这些是经过PCA(主成分分析)转换后的特征
Amount:表示交易金额。
Class:目标变量,表示交易是否为欺诈(1表示欺诈,0表示正常)。

数据集非常大且没有缺失值,适合进行机器学习模型的训练。

通过初步的浏览,我们对数据有了一个基本的了解,可以进一步进行数据分析和建模工作。

2.计算欺诈交易占数据集中交易总数的百分比

# 计算欺诈交易数量
fraud_count = creditcard_data[creditcard_data['Class'] == 1].shape[0]
# 计算总交易数量
total_count = creditcard_data.shape[0]
# 计算百分比
fraud_percentage = (fraud_count / total_count) * 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dotdotyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值