逻辑回归实战--信用卡欺诈检测(一)

首先导入所需要的工具包。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

接下来导入数据

点击下方链接获取数据:
https://download.csdn.net/download/weixin_42410915/12822262

data = pd.read_csv('c:/users/lenovo/Desktop/card.csv')
data.head() #默认展示数据的前5行记录

原始数据为个人交易记录,该数据总共31列,其中数据特征有30列,Time列暂时不考虑,Amount列表示贷款的金额,Class列表示分类结果,0为交易记录正常,若Class为1代表交易异常。

实际生活中,正常交易占绝大多数,异常交易仅占一小部分。由于数据太多,查看异常交易的情况有些麻烦,value_counts()函数可以算出数据中有哪些不同值,并计算每个值有多少个重复值。由此可以得到异常交易的数量。

count_classes = data['Class'].value_counts()
count_classes

结果如下:

但是绘制一张图表是不是更能清晰地表达交易状况呢?

此时需要将pandas和matplotlib库结合一下。

count_classes.plot(kind='bar')
plt.title('Fraud class histogram')
plt.xlabel('Class')
plt.ylabel('Frequency')

结果如下:

不管从数据还是从图表中都可知异常数据非常少,而我们的目标就是找到异常数据,如果搭建的模型不重视极少数数据,结果就没有意义了,所以,要改进数据的不平衡性。 解决数据不平衡问题,让两者的数据相差不大即可。通常采用下采样、过采样这两种方法。

下采样:若一组的数据非常少,让另一组数据变少,使两者比例均衡。即从正常数据中随机抽取大约500条数据即可。看似方法挺简单,但只利用了上万条数据中的一小部分,会不会对结果产生影响呢?

过采样:不放弃任何一条数据,通过制造出一些异常数据,让两组数据一样多。数据生成也是现阶段常见的一种方法。但是假设得到的数据是否符合真实情况,对结果造成影响呢?

前辈说:数据特征决定结果的上限,模型的调优只决定如何接近这个上限。 机器学习的核心其实都在数据处理中,数学建模只是其中一部分。

from sklearn.preprocessing import StandardScaler

#将Amount标准化,并赋给新的列NormAmount
data['NormAmount'] = StandardScaler().fit_transform(data['Amount'].values.reshape(-1,1))
data = data.drop([&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值