数据挖掘 | 信用卡欺诈预测实战

本文通过Python实现,使用信用卡欺诈数据集,应用Logistic Regression和Random Forest进行分类预测分析。数据探索显示欺诈交易比例极低,且分布不均衡。在未调参的情况下,Random Forest在预测效果上优于Logistic Regression。

本篇的数据挖掘实战是以信用卡欺诈的数据集为例,用 Logistic Regression 和 Random Forest 两个分类算法进行预测分析。以下代码是用 Python 3 实现。

首先导入要用到的 Python 包。

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import itertools
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, precision_recall_curve
from sklearn.metrics import roc_curve, auc
from sklearn.preprocessing import StandardScaler

读入数据,数据类型是 .csv 文件。

data = pd.read_csv('./creditcard.csv')
数据初探索

输出 data 的前 5 行,先直观地看一下数据的样子。

data.head(5)

由于属性太多,该图未截取完整。
1
继续对数据进行探索。

print(data.shape)   	# 输出行数和列数(284807, 31)
data.columns.tolist()   # 显现数据的所有列名称
print(data.describe())  # 对数据的描述性统计

2
接下来绘制类别的分布,通过直方图可以直观地观察到有多少类,以及每个类的分布。

plt.figure()
ax = sns.countplot(x = 'Class',data = data)
plt.title('class distribution')
plt.show()

观察直方图,我们会发现这是一个二分类的数据集,并且数据分布极为不平衡。毕竟在信用卡违约贷款中,属于欺诈的交易还是极少数的。
3
具体计算一下总交易数,以及属于欺诈的交易数。

num = len(data)
num_fraud = len(data[data['Class'] == 1])
print("总交易笔数",num)
print("诈骗交易次数", num_fraud)`在这里插入代码片`
print("诈骗交易比例:{:.6f}".format(num_fraud/num))
# 输出结果
总交易笔数 284807
诈骗交易次数 492
诈骗交易比例:0.001727

可视化一下在不同的时间点下,正常与欺诈的交易次数的分布。

f, (ax1, ax2) = plt.subplots(2, 1, sharex=True, figsize=(15
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值