逻辑回归实现信用卡欺诈预测

该博客通过逻辑回归分析creditcard.csv数据集,解决信用卡欺诈预测问题。数据分布不均衡,采用向下采样处理。对Amount属性进行标准化,去除无关的time属性。通过交叉验证提升模型泛化能力,用召回率作为评估标准,最终选出合适正则化参数并展示混淆矩阵。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用的数据集为creditcard.csv,先使用pandas读取数据集并查看下数据集的内容。

# 读取数据集并查看数据属性
data = pd.read_csv("creditcard.csv")
print(data.head())

图一

观察上面的数据后,由于这是一个分类问题,所以说我们需要查看数据的类别分布是否是均衡的,如果不均衡则会影响分类的结果。由于绘制的图形不是很难,所以使用pandas自带的绘图API即可(series.plot)。

# 作为一个二分类问题,先查看下样本分布是否均衡
count_classes = pd.value_counts(data['Class'], sort=True).sort_index()
print(type(count_classes))
# 绘制分布图
count_classes.plot(kind = 'bar')
plt.title("Fraud class histogram")
plt.xlabel("Class")
plt.ylabel("Frequency")
plt.show()

由图像可以看出,数据集的类别分布十分不均匀,大部分都是0类(正常用户),而1类用户(欺诈用户)是笔记少的,所以我们需要对数据进行处理,这里的话可以采用两种方式,向上采样和向下采样,向上采样的意思是对于不足的类别进行生成(最简单的办法每个属性分布使用其属性的均值即可),向下采样(数量多的样本选取出一定数目的样本用于训练,使其数目和数量少的样本保持一致)。

而再处理向上采样和向下采样之前,我们需要先对数据进行一些预处理。由图一可以看出,数据集中Amount属性的分布十分不均匀,或大或小,而且和其他属性的值相差过大,这样对于大部分模型来说,会让算法误以为这个属性十分重要,但是这个是不一定的,所以我们需要对这个属性进行预处理,一般来说是使用归一化或者标准化即可,在这里我们使用标准化。而time属性很明显是一个无关的属性,所以我们选择直接舍弃这个属性。

# 由于Amount属性不均衡,所以对其进行归一化处理
data['normAmount'] = StandardScaler().fit_transform(data['Amount'].reshape(-1, 1))
data = data.d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值