You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.0 KiB

12.1 了解数据

和上一章一样,我们要养成一个习惯,当拿到数据时,一定要先看看数据大概是个什么样子,有多少条记录,有多少个字段等。所以我们先来看一下数据。

import pandas as pd
transactions = pd.read_csv('../input/creditcard.csv')
transactions.shape

嗯,总共有 28 万多条信用卡交易记录31 个特征。我们来看看大概长什么样。

# 随机采样5条数据
transactions.sample(5)

特征太多,截图一次性截不全,那么可以用 info 函数来看看整个数据集的特征名称与其对应的数据类型。

transactions.info()

不难看出数据集中的 class 字段是数据集的标签即该交易是否为欺诈交易1表示为敲诈交易0 表示为正常交易。Amount 字段表示该笔交易的金额Time 字段表示该交易发生的时间。然而其他的字段都是什么 V1, V2, V28 什么的,让我们变成了丈二的和尚摸不着头脑。这种字段我们通常称为匿名字段,为什么会有匿名字段呢?是由于该数据集是信用卡相关的数据集,里面可能会有一些客户的敏感信息,所以对原始数据进行了一些加工,来实现脱敏。

接下来,我们来看一看该数据集中是正常交易比较多还是欺诈交易比较多。

transactions['Class'].value_counts()

还是比较正常的,因为欺诈行为一般还是占很小一部分的。那这样会导致什么样的问题呢?很明显,假设我写一个程序,我就一直预测交易信息是属于正常交易的,那么预测的准确率也有 95% 以上。这个准确率看上去很高,但是这样的程序你敢用吗?我猜你肯定不敢用。

所以,从刚刚的数据探索我们发现,这个数据集有两个难点,一个是恶心的匿名字段,还有一个是数据集的标签分布严重倾斜。