特征工程和Kaggle赛题分析

原创
2021/09/14 22:52
阅读数 3.2K

特征工程的重要性

特征工程:决定了模型的精度上限。是数据挖掘的主要工作内容:数据清洗、数据预处理、数据转换

特征工程在我们的模型建立之前,它的作用是把我们的数据集里面的数据进行一个有效的表征。当我们称字段的时候,这个字段往往指数据库存储的字段,它是一个原始的字段。这个原始的字段它能不能直接当作一个特征来参与模型的训练呢?这个是有待商榷的。字段和特征的一个关键的区别就是并不是说所有的字段都是可以成为一个特征。我们的特征工程是需要从我们的原始字段里面筛选出合理的字段,并进行一个相关的转化。

对于一个算法工程师,他60%的时间其实是在清洗和整理数据。而建立构建模型,定义算法的时间其实是占据比较少的。其实要做好特征工程,首先是要对原始字段进行一个深刻的理解。字段类型:数值类型、类别字段、日期字段、图像和文本等,不同的类型有不同的编码方法。

在上图中,对于数值类型字段和类别字段是存在差异的,比如说对数值类型和类别类型缺失值的填充就存在差异性。对于数值类型的缺失值,它往往都是一个中位数或者说重数或者说用差值的方法对它来进行填充,缺失值还可以对它进行最大最小的策划。然后得到一个可以参与训练的数值特征。对于类别类型,可以用出现次数最多的字段来进行填充,它的编码方法也与数值类型不一样。

然后需要进行数据(特征)处理、数据归一化、数据转换。

数据(特征)处理就是说把原始的字段,如果是多张表,我们需要对它进行多表的合并,然后对数据进行清洗,比如说有些字段存在噪音。

在上图中,比如说原始数据是一个数值类型的字段,我们只需要取值直接赋值到特征这边就行了。

类别特征:最常见的数据字段

我们常见的类别字段有无序的类别字段和有序的类别字段。无序的类别字段,它们都是相互平等的,比如说文具类别的钢笔、铅笔、橡皮擦,或者动物里面的奶牛、狗、猫。它们没有大小之分,相互平等。还有一类有序的类别,比如情感里面的非常好、好、不好;还有一个学历的信息:本科、硕士、博士。虽然说都是一个类别类型的字段,但是它的取值是存在这种大小关系的。我们在对具体的类别字段进行编码的时候也需要考虑它具体的含义以及它的取值是否存在这种大小的关系。

  • 是最常见的特征:
    • 颜色:红色、白色、黑色、粉色等;
    • 国家:中国、美国、英国、新加坡等;
    • 动物:猫、狗、蛇、老虎、猴等;
  • 任何时候都需要进行处理的数据;
  • 高基数(High cardinality)会带来离散数据;
  • 很难进行缺失值填充;

对于原始的类别字段都是一个字符串的形式,对于我们的机器学习模型,它只能接受数值类型的出入。对类别字段就需要进行编码。对类别字段进行编码的时候需要注意假如一个类别字段取值空间非常大的时候,比如说动物,这个取值空间就非常大,几千几万都有可能,我们就要非常非常谨慎。这种类型处理不好就很容易带来高基数离散的情况。

现在我们来看一些示例

import pandas as pd

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    print(df.head(10))

运行结果

   student_id country education  target
0           1   China    Master       1
1           2     USA  Bachelor       0
2           3      UK  Bachelor       1
3           4   Japan    Master       0
4           5   Korea       PHD       1
5           6   China       PHD       0
6           7     USA  Bachelor       1

这个表格可以理解成数据库里的一个原始表,我们来看如何对它进行特征提取和特征编码的。

类别特征

Onehot

首先,这个表里面的国家和学历都是类别字段,其中国家为无序类别字段,学历为有序类别字段.Onehot又叫独热编码,对于学历字段中有3个值,Onehot编码会将这3个值转成3列数字,但是转成的这3列是没有大小之分的。

import pandas as pd

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    # Onehot编码
    print(pd.get_dummies(df, columns=['education']))

运行结果

   student_id country  education_Bachelor  education_Master  education_PHD
0           1   China  0                   1                 0
1           2     USA  1                   0                 0
2           3      UK  1                   0                 0
3           4   Japan  0                   1                 0
4           5   Korea  0                   0                 1
5           6   China  0                   0                 1
6           7     USA  1                   0                 0

scikit-learn中也有Onehot编码

import pandas as pd
from sklearn.preprocessing import OneHotEncoder

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    # Onehot编码
    # print(pd.get_dummies(df, columns=['education']))
    one_hot = OneHotEncoder()
    print(one_hot.fit_transform(df[['education']]).toarray())

运行结果

[[0. 1. 0.]
 [1. 0. 0.]
 [1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [0. 0. 1.]
 [1. 0. 0.]]

LabelEncoder

LabelEncoder是给标签进行编码的,但是也可以给类别进行编码,比如说给国家进行一个编码

import pandas as pd
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    # Onehot编码
    # print(pd.get_dummies(df, columns=['education']))
    one_hot = OneHotEncoder()
    # print(one_hot.fit_transform(df[['education']]).toarray())
    le = LabelEncoder()
    df['country_LabelEncoder'] = le.fit_transform(df['country'])
    print(df.head(10))

运行结果

   student_id country education  target  country_LabelEncoder
0           1   China    Master       1                     0
1           2     USA  Bachelor       0                     4
2           3      UK  Bachelor       1                     3
3           4   Japan    Master       0                     1
4           5   Korea       PHD       1                     2
5           6   China       PHD       0                     0
6           7     USA  Bachelor       1                     4

我们可以看到这里给中国编码为0,这是跟China的首字母的顺序来取值的。在pandas中的操作如下

import pandas as pd
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    # Onehot编码
    # print(pd.get_dummies(df, columns=['education']))
    one_hot = OneHotEncoder()
    # print(one_hot.fit_transform(df[['education']]).toarray())
    # LabelEncoder编码
    le = LabelEncoder()
    df['country_LabelEncoder'] = le.fit_transform(df['country'])
    # print(df.head(10))
    df['country_LabelEncoder'] = pd.factorize(df['country'])[0]
    print(df.head(10))

运行结果

   student_id country education  target  country_LabelEncoder
0           1   China    Master       1                     0
1           2     USA  Bachelor       0                     1
2           3      UK  Bachelor       1                     2
3           4   Japan    Master       0                     3
4           5   Korea       PHD       1                     4
5           6   China       PHD       0                     0
6           7     USA  Bachelor       1                     1

但是pandas跟scikit-learn不同的是按照出现的顺序来编码的。LabelEncoder的优点在于它没有增加原始数据的维度,原始的country就是1列,它编码完成之后仍然是1列。但是其缺点就是对于无序类别字段编码后就会有大小关系了。

那我们在进行实际分类编码的时候到底用Onehot还是LabelEncoder呢?按照习惯来说,如果一个类别取值空间个数<10的用Onehot,否则用LableEncoder

Ordinal Encoding

顺序编码,在进行编码的时候需要人为设定编号

import pandas as pd
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    # Onehot编码
    # print(pd.get_dummies(df, columns=['education']))
    one_hot = OneHotEncoder()
    # print(one_hot.fit_transform(df[['education']]).toarray())
    # LabelEncoder编码
    le = LabelEncoder()
    df['country_LabelEncoder'] = le.fit_transform(df['country'])
    # print(df.head(10))
    df['country_LabelEncoder'] = pd.factorize(df['country'])[0]
    # print(df.head(10))
    # Ordinal Encoding编码
    df['education'] = df['education'].map({
        'Bachelor': 1,
        'Master': 2,
        'PHD': 3
    })
    print(df.head(10))

运行结果

   student_id country  education  target  country_LabelEncoder
0           1   China          2       1                     0
1           2     USA          1       0                     1
2           3      UK          1       1                     2
3           4   Japan          2       0                     3
4           5   Korea          3       1                     4
5           6   China          3       0                     0
6           7     USA          1       1                     1

Ordinal Encoding编码的好处就是可以设定大小关系,根据大小关系进行手动映射就可以了。

BinaryEncoder

二进制编码,类似于Onehot,但是不会有那么多个维度,它是编码后在用少数维度值相加得到最终编码的方式

import pandas as pd
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
import category_encoders as ce

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    # Onehot编码
    # print(pd.get_dummies(df, columns=['education']))
    one_hot = OneHotEncoder()
    # print(one_hot.fit_transform(df[['education']]).toarray())
    # LabelEncoder编码
    le = LabelEncoder()
    df['country_LabelEncoder'] = le.fit_transform(df['country'])
    # print(df.head(10))
    df['country_LabelEncoder'] = pd.factorize(df['country'])[0]
    # print(df.head(10))
    # Ordinal Encoding编码
    df['education'] = df['education'].map({
        'Bachelor': 1,
        'Master': 2,
        'PHD': 3
    })
    # print(df.head(10))
    # BinaryEncoder编码
    encoder = ce.BinaryEncoder(cols=['country'])
    print(pd.concat([df, encoder.fit_transform(df['country']).iloc[:, 1:]], axis=1))

运行结果

   student_id country  education  target  country_LabelEncoder   country_1  country_2  country_3
0           1   China          2       1                     0   0          0          1
1           2     USA          1       0                     1   0          1          0
2           3      UK          1       1                     2   0          1          1
3           4   Japan          2       0                     3   1          0          0
4           5   Korea          3       1                     4   1          0          1
5           6   China          3       0                     0   0          0          1
6           7     USA          1       1                     1   0          1          0

根据结果我们可以看出它的编码方式是一种二进制的进位方式来进行编码的。

Frequency/Count Encoding

对于这种编码方式,以国家为例,我们不是以一个数值来代替类别,而是以该国家在所有国家中出现的频率来代替它

import pandas as pd
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
import category_encoders as ce

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    # Onehot编码
    # print(pd.get_dummies(df, columns=['education']))
    one_hot = OneHotEncoder()
    # print(one_hot.fit_transform(df[['education']]).toarray())
    # LabelEncoder编码
    le = LabelEncoder()
    df['country_LabelEncoder'] = le.fit_transform(df['country'])
    # print(df.head(10))
    df['country_LabelEncoder'] = pd.factorize(df['country'])[0]
    # print(df.head(10))
    # Ordinal Encoding编码
    df['education'] = df['education'].map({
        'Bachelor': 1,
        'Master': 2,
        'PHD': 3
    })
    # print(df.head(10))
    # BinaryEncoder编码
    encoder = ce.BinaryEncoder(cols=['country'])
    # print(pd.concat([df, encoder.fit_transform(df['country']).iloc[:, 1:]], axis=1))
    # Frequency/Count Encoding编码
    df['country_count'] = df['country'].map(df['country'].value_counts()) / len(df)
    print(df.head(10))

运行结果

   student_id country  education  target  country_LabelEncoder  country_count
0           1   China          2       1                     0       0.285714
1           2     USA          1       0                     1       0.285714
2           3      UK          1       1                     2       0.142857
3           4   Japan          2       0                     3       0.142857
4           5   Korea          3       1                     4       0.142857
5           6   China          3       0                     0       0.285714
6           7     USA          1       1                     1       0.285714

当然也可以使用该国家出现的频数来代替它

import pandas as pd
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
import category_encoders as ce

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    # Onehot编码
    # print(pd.get_dummies(df, columns=['education']))
    one_hot = OneHotEncoder()
    # print(one_hot.fit_transform(df[['education']]).toarray())
    # LabelEncoder编码
    le = LabelEncoder()
    df['country_LabelEncoder'] = le.fit_transform(df['country'])
    # print(df.head(10))
    df['country_LabelEncoder'] = pd.factorize(df['country'])[0]
    # print(df.head(10))
    # Ordinal Encoding编码
    df['education'] = df['education'].map({
        'Bachelor': 1,
        'Master': 2,
        'PHD': 3
    })
    # print(df.head(10))
    # BinaryEncoder编码
    encoder = ce.BinaryEncoder(cols=['country'])
    # print(pd.concat([df, encoder.fit_transform(df['country']).iloc[:, 1:]], axis=1))
    # Frequency/Count Encoding编码
    df['country_count'] = df['country'].map(df['country'].value_counts()) / len(df)
    # print(df.head(10))
    df['country_count'] = df['country'].map(df['country'].value_counts())
    print(df.head(10))

运行结果

   student_id country  education  target  country_LabelEncoder  country_count
0           1   China          2       1                     0              2
1           2     USA          1       0                     1              2
2           3      UK          1       1                     2              1
3           4   Japan          2       0                     3              1
4           5   Korea          3       1                     4              1
5           6   China          3       0                     0              2
6           7     USA          1       1                     1              2

Count Encoding跟之前的编码方式不一样,它相当于是对某一列整体的取值空间做一个统计,它的优点就是对于所有的类别字段都是适用的,不管它有没有大小关系。它的缺点是进行编码的时候使用某一列整体的空间来进行编码的,假如说训练数据集某一列的取值的分布和测试数据集这一列的取值分布不一致的话,就会导致编码存在问题,所以它一般用在数据集分布比较一致的情况下才使用。当然它也可以做一个计数用。

Mean/Target Encoding

之前的编码都没有用到标签target,标签其实是有很多信息的,我们在对类别进行编码的时候可以考虑标签的信息,比如说我们可以统计国家的标签的均值

import pandas as pd
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
import category_encoders as ce

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    # Onehot编码
    # print(pd.get_dummies(df, columns=['education']))
    one_hot = OneHotEncoder()
    # print(one_hot.fit_transform(df[['education']]).toarray())
    # LabelEncoder编码
    le = LabelEncoder()
    df['country_LabelEncoder'] = le.fit_transform(df['country'])
    # print(df.head(10))
    df['country_LabelEncoder'] = pd.factorize(df['country'])[0]
    # print(df.head(10))
    # Ordinal Encoding编码
    df['education'] = df['education'].map({
        'Bachelor': 1,
        'Master': 2,
        'PHD': 3
    })
    # print(df.head(10))
    # BinaryEncoder编码
    encoder = ce.BinaryEncoder(cols=['country'])
    # print(pd.concat([df, encoder.fit_transform(df['country']).iloc[:, 1:]], axis=1))
    # Frequency/Count Encoding编码
    df['country_count'] = df['country'].map(df['country'].value_counts()) / len(df)
    # print(df.head(10))
    df['country_count'] = df['country'].map(df['country'].value_counts())
    # print(df.head(10))
    # Mean / Target Encoding编码
    print(df.groupby(['country'])['target'].mean())
    df['country_target'] = df['country'].map(df.groupby(['country'])['target'].mean())
    print(df.head(10))

运行结果

country
China    0.5
Japan    0.0
Korea    1.0
UK       1.0
USA      0.5
Name: target, dtype: float64
   student_id country  education  target  country_LabelEncoder  country_count  country_target
0           1   China          2       1                     0              2  0.5
1           2     USA          1       0                     1              2  0.5
2           3      UK          1       1                     2              1  1.0
3           4   Japan          2       0                     3              1  0.0
4           5   Korea          3       1                     4              1  1.0
5           6   China          3       0                     0              2  0.5
6           7     USA          1       1                     1              2  0.5

Target Encoding在很多情况下都是非常有用的,提前给我们模型一个先验知识,比如说China对应的target的平均值,以及USA对应的target的平均值。它能帮助模型快速收敛。但是Target Encoding的缺点就是容易过拟合,很容易发生标签的泄漏,比如说对于Japan只有1个,在Target Encoding后就直接把它的标签信息给泄漏出去。一般情况下Target Encoding用在一列的每个取值出现次数都比较多,不存在类似Japan只有1个的取值。其次Target Encoding需要交叉验证的使用,对验证集不能直接使用Target Encoding的,我们需要训练集的Target Encoding来作为验证集的字段的编码。有关交叉验证请参考机器学习算法整理(二)

数值特征

信息量大,是常见的连续特征:

  1. 年龄:18、19、25、40;
  2. 成绩:55、60、75、80、95;
  3. 经纬度:45.87、23.89、21.21;

容易出现异常值和离群点;现在我们以一个例子来说明

import pandas as pd

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'age': [34.5, 28.9, 19.5, 23.6, 19.8, 29.8, 31.7],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    print(df.head(10))

运行结果

   student_id country education   age  target
0           1   China    Master  34.5       1
1           2     USA  Bachelor  28.9       0
2           3      UK  Bachelor  19.5       1
3           4   Japan    Master  23.6       0
4           5   Korea       PHD  19.8       1
5           6   China       PHD  29.8       0
6           7     USA  Bachelor  31.7       1

Round

取整

import pandas as pd

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'age': [34.5, 28.9, 19.5, 23.6, 19.8, 29.8, 31.7],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    df['age_round1'] = df['age'].round()
    df['age_round2'] = (df['age'] / 10).astype(int)
    print(df.head(10))

运行结果

   student_id country education   age  target  age_round1  age_round2
0           1   China    Master  34.5       1        34.0           3
1           2     USA  Bachelor  28.9       0        29.0           2
2           3      UK  Bachelor  19.5       1        20.0           1
3           4   Japan    Master  23.6       0        24.0           2
4           5   Korea       PHD  19.8       1        20.0           1
5           6   China       PHD  29.8       0        30.0           2
6           7     USA  Bachelor  31.7       1        32.0           3

这里在age_round2上,我们进行了一个缩放。数值类型取值空间会很精确,有的时候数值精确不一定是好的,比如在上面的表中,我们知道id为6的同学的年龄为29.8岁,我们通过这个数值类型,我们能够对应到他的标签,在这种情况下,如果我们的数值类型的特征取值空间过于精确的情况下,那就容易导致标签很容易泄漏。而且我们的模型很容易去学习数值类型细枝末节的一些规律,反而不去学它主要的规律。如果我们对它取整,是可以忽略这些信息的。

Box/Bins

分箱,我们可以把数值特征进行一个划分

import pandas as pd

if __name__ == "__main__":

    # 定义一个表格,有一些学生信息
    df = pd.DataFrame({
        'student_id': [1, 2, 3, 4, 5, 6, 7],
        'country': ['China', 'USA', 'UK', 'Japan', 'Korea', 'China', 'USA'],
        'education': ['Master', 'Bachelor', 'Bachelor', 'Master', 'PHD', 'PHD', 'Bachelor'],
        'age': [34.5, 28.9, 19.5, 23.6, 19.8, 29.8, 31.7],
        'target': [1, 0, 1, 0, 1, 0, 1]
    })
    # print(df.head(10))
    # Round取整
    df['age_round1'] = df['age'].round()
    df['age_round2'] = (df['age'] / 10).astype(int)
    # print(df.head(10))
    # Box / Bins分箱
    df['age_<20'] = (df['age'] <= 20).astype(int)
    df['age_20-25'] = ((df['age'] > 20) & (df['age'] <= 25)).astype(int)
    df['age_25-30'] = ((df['age'] > 25) & (df['age'] <= 30)).astype(int)
    df['age_>30'] = (df['age'] > 30).astype(int)
    print(df.head(10))

运行结果

   student_id country education   age  target  age_round1  age_round2  age_<20  age_20-25  age_25-30  age_>30
0           1   China    Master  34.5       1        34.0           3        0          0          0        1
1           2     USA  Bachelor  28.9       0        29.0           2        0          0          1        0
2           3      UK  Bachelor  19.5       1        20.0           1        1          0          0        0
3           4   Japan    Master  23.6       0        24.0           2        0          1          0        0
4           5   Korea       PHD  19.8       1        20.0           1        1          0          0        0
5           6   China       PHD  29.8       0        30.0           2        0          0          1        0
6           7     USA  Bachelor  31.7       1        32.0           3        0          0          0        1

日期特征

表明记录的次序

  1. 需要特殊处理:
    1. 用户登录日志
    2. 用户消费时间
  2. 容易出现信息泄漏

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

if __name__ == "__main__":

    df = pd.read_csv("/Users/admin/Downloads/Metro_Interstate_Traffic_Volume.csv")
    print(df.head())
    print(df.info())
    df.date_time = pd.to_datetime(df.date_time)
    moths = df.date_time.dt.month
    day_of_months = df.date_time.dt.day
    hours = df.date_time.dt.hour
    one_hot = df.date_time.dt.day_name()
    days = pd.get_dummies(one_hot)
    print(days)

运行结果

  holiday    temp  ...            date_time  traffic_volume
0    None  288.28  ...  2012-10-02 09:00:00            5545
1    None  289.36  ...  2012-10-02 10:00:00            4516
2    None  289.58  ...  2012-10-02 11:00:00            4767
3    None  290.13  ...  2012-10-02 12:00:00            5026
4    None  291.14  ...  2012-10-02 13:00:00            4918

[5 rows x 9 columns]
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 48204 entries, 0 to 48203
Data columns (total 9 columns):
 #   Column               Non-Null Count  Dtype  
---  ------               --------------  -----  
 0   holiday              48204 non-null  object 
 1   temp                 48204 non-null  float64
 2   rain_1h              48204 non-null  float64
 3   snow_1h              48204 non-null  float64
 4   clouds_all           48204 non-null  int64  
 5   weather_main         48204 non-null  object 
 6   weather_description  48204 non-null  object 
 7   date_time            48204 non-null  object 
 8   traffic_volume       48204 non-null  int64  
dtypes: float64(3), int64(2), object(4)
memory usage: 3.3+ MB
None
       Friday  Monday  Saturday  Sunday  Thursday  Tuesday  Wednesday
0           0       0         0       0         0        1          0
1           0       0         0       0         0        1          0
2           0       0         0       0         0        1          0
3           0       0         0       0         0        1          0
4           0       0         0       0         0        1          0
...       ...     ...       ...     ...       ...      ...        ...
48199       0       0         0       1         0        0          0
48200       0       0         0       1         0        0          0
48201       0       0         0       1         0        0          0
48202       0       0         0       1         0        0          0
48203       0       0         0       1         0        0          0

[48204 rows x 7 columns]

特征筛选

特征筛选方法:选择最有效的特征

如果做的一些特征是足够有必要的情况下,可以不做特征筛选。特征筛选是我们选择特征子集的一部分,假如原始的特征的空间有100个特征,我们想要从这里面选择出最有效的特征子集出来,比如说选择其中的80个特征构建得到一个新的特征空间。然后用这选择出来的80个特征,再进行训练我们的模型。我们做特征筛选往往是以模型的精度来进行一个衡量的。当我们的一个特征加入到数据集之后,它参与我们的模型训练之后,这个精度有没有变化。如果加了这个特征,我们的模型的精度上升,或者说当剔除这个特征之后,我们的模型精度有下降,在这种情况下,我们就要把这个特征给保留下来。

根据统计值的比例进行筛选

  1. 字段方差:  直接计算字段整体一列选择出来,然后算它的方差。这个方差就会衡量它的一列波动的范围。如果它的波动范围比较小的情况下,其实它包含的信息量也比较小。
  2. 缺失值比例:  如果一个字段它缺失的比例非常多,不管是从原始字段得到的或者是新构造特征得到的,假如说它缺失比例高达99%甚至以上,那么我们就没必要保留它了。
  3. 分布一致性:  如果我们的特征,它原始在训练集和测试集它整体的分布就不太一致,在这种情况下,这个特征也是可以剔除它的。
  4. 离群点
  5. 标签相关性

基于模型的特征筛选

线性模型:参数作为模型的重要程度(Coefficients as Feature Importance)

比如说线性回归、逻辑回归以及所有的线形模型的coef_字段。

机器学习模型不仅仅是可以用来模型的一个训练,也可以用来模型最终的预测并进行一个评价。在模型中有很多重要的方法可以来衡量原始特征的重要性。

树模型:特征重要程度(Feature Importance)

  1. 根据字段在节点分裂的信息增益最大或基尼系数来选择特征,然后通过这个特征它的范围来进行节点的分裂。对于树模型而言,肯定是优先使用它信息量就是说信息中心最大的节点来完成,树模型本质在构建模型的时候,也带有节点重要性的计算在里面。
  2. 根据字段被分裂次数即在叶子节点上被使用的次数,字段分裂平均深度,它是平均在第几层的树模型被分裂,这个都是可以用来被衡量一个特征的重要性。

排列重要程度(Permutation importance)

将特征随机打散后计算模型精度的差异,并将精度变化作为特征重要性

当我们训练好一个模型之后,不管是树模型还是线形模型,然后我们对某个字段进行打散(把一个字段的一列把顺序进行打乱),然后再去预测一下这个模型在打乱之后的精度的差异。这个相当于我们训练一个模型,然后把每一列都分开打乱,计算一下每一列,当打乱之后它的精度变化的差异性。比如上图中Height at age 10(cm)这一列非常重要,当它打乱重新排序之后,那么我们这个精度变化的一个幅度应该很大。

Null Importance

将标签多次乱序后,对比原始特征与打乱标签后的特征重要性。它与排列重要性非常类似。

左边这张图是一个特征在模型里面的一个分裂的过程中,被使用的次数以及它的信息增益。红色的部分是标签在原始的正常次序下的特征的重要性,这里我们可以将标签打散,打乱多次,比如说打乱20次,可以绘制打乱20次的特种的重要性,得到一个直方图。这里我们可以看到,对于左边的特征来说,不管是它使用的次数还是信息增益来说,特征原始的重要性跟打乱标签之后的重要性是差不多的。也就是说这个标签打乱与否,对这个特征没有关系。右边这个特征,红色部分是原始的重要性,柱状图是打乱之后的,当标签打乱之后,它特征的重要性是降低很多的。也就说明右边这个特征跟标签是相关的。

使用模型

import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
from sklearn import datasets

if __name__ == "__main__":

    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    rf_reg = RandomForestRegressor()
    rf_reg.fit(X, y)
    print(rf_reg.feature_importances_)
    plt.figure(figsize=(12, 6))
    plt.bar(range(1, 14), rf_reg.feature_importances_)
    plt.xticks(range(1, 14), boston.feature_names)
    plt.show()

运行结果

[0.03996627 0.00089909 0.00574654 0.00072161 0.02384297 0.45261648
 0.01210118 0.06659407 0.00308432 0.01541398 0.01570334 0.01204337
 0.35126678]

这里我们使用随机森林来训练波士顿房价的数据集,通过绘制该数据集的特征的重要性直方图,我们可以看出RM和LSTAT是最重要的,其他的字段就稍微不那么重要。之前我们在机器学习算法整理 中也有过特征对房价重要程度的说明,不过那边排第二位的是CHAS,于这里不同的是那边使用的是线性回归,而这里是随机森林,而随机森林是以决策树为底层的算法,说明LSTAT在决策树的分裂和信息增益方面是比较大的。随机森林的内容请参考机器学习算法整理(四)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
from sklearn import datasets
from lightgbm import LGBMRegressor

if __name__ == "__main__":

    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    rf_reg = RandomForestRegressor()
    rf_reg.fit(X, y)
    # print(rf_reg.feature_importances_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(1, 14), rf_reg.feature_importances_)
    # plt.xticks(range(1, 14), boston.feature_names)
    # plt.show()
    lgb_clf = LGBMRegressor()
    lgb_clf.fit(X, y)
    plt.figure(figsize=(12, 6))
    plt.bar(range(1, 14), lgb_clf.feature_importances_)
    plt.xticks(range(1, 14), boston.feature_names)
    plt.show()

运行结果

import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
from sklearn import datasets
from lightgbm import LGBMRegressor
from xgboost import XGBRegressor

if __name__ == "__main__":

    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    rf_reg = RandomForestRegressor()
    rf_reg.fit(X, y)
    # print(rf_reg.feature_importances_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(1, 14), rf_reg.feature_importances_)
    # plt.xticks(range(1, 14), boston.feature_names)
    # plt.show()
    lgb_clf = LGBMRegressor()
    lgb_clf.fit(X, y)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(1, 14), lgb_clf.feature_importances_)
    # plt.xticks(range(1, 14), boston.feature_names)
    # plt.show()
    xgb_clf = XGBRegressor()
    xgb_clf.fit(X, y)
    plt.figure(figsize=(12, 6))
    plt.bar(range(1, 14), xgb_clf.feature_importances_)
    plt.xticks(range(1, 14), boston.feature_names)
    plt.show()

运行结果

从以上的库的回归中,我们都可以看到RM和LSTAT都是非常重要的特征。

利用方差

from sklearn.feature_selection import VarianceThreshold

if __name__ == "__main__":

    X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]
    sel = VarianceThreshold(threshold=(0.8 * (1 - 0.8)))
    print(sel.fit_transform(X))
    print(sel.variances_)

运行结果

[[0 1]
 [1 0]
 [0 0]
 [1 1]
 [1 0]
 [1 1]]
[0.13888889 0.22222222 0.25      ]

这里我们首先定义一个6*3的值,相当于有3个特征,这里我们使用方差来进行筛选,threshold为方差的阈值,也就是说当某个特征的方差大于该值就会被挑选出来,这里方差的计算公式为,我们这里设置为0.16,我们来看第一列的均值(0+0+1+0+0+0)/6=0.1666,则方差为[(0-0.1666)^2+(0-0.1666)^2+(1-0.1665)^2+(0-0.1666)^2+(0-0.1666)^2+(0-0.1666)^2]/6=(0.1388+0.6945)/6=0.13888889,该值没有达到0.16,会被踢除,另外两个特征的方差为0.22222222和0.25,所以被挑选了出来。同样道理,我们也可以用方差来选择波士顿房价数据的特征。

from sklearn.feature_selection import VarianceThreshold
from sklearn import datasets

if __name__ == "__main__":

    X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]
    sel = VarianceThreshold(threshold=(0.8 * (1 - 0.8)))
    # print(sel.fit_transform(X))
    # print(sel.variances_)
    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    sel.fit_transform(X)
    print(boston.feature_names[~sel.get_support()])
    print(boston.feature_names)

运行结果

['CHAS' 'NOX']
['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
 'B' 'LSTAT']

这里方差得出来的是特征数据离散的程度,它跟之前的随机森林的特征重要性又是不一样的视角来看待特征字段的。

利用相关性

from sklearn import datasets
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

if __name__ == "__main__":

    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    print(iris.DESCR)
    sel = SelectKBest(chi2, k='all')
    sel.fit(X, y)
    print(sel.fit_transform(X, y).shape)
    print(sel.scores_)

运行结果

.. _iris_dataset:

Iris plants dataset
--------------------

**Data Set Characteristics:**

    :Number of Instances: 150 (50 in each of three classes)
    :Number of Attributes: 4 numeric, predictive attributes and the class
    :Attribute Information:
        - sepal length in cm
        - sepal width in cm
        - petal length in cm
        - petal width in cm
        - class:
                - Iris-Setosa
                - Iris-Versicolour
                - Iris-Virginica
                
    :Summary Statistics:

    ============== ==== ==== ======= ===== ====================
                    Min  Max   Mean    SD   Class Correlation
    ============== ==== ==== ======= ===== ====================
    sepal length:   4.3  7.9   5.84   0.83    0.7826
    sepal width:    2.0  4.4   3.05   0.43   -0.4194
    petal length:   1.0  6.9   3.76   1.76    0.9490  (high!)
    petal width:    0.1  2.5   1.20   0.76    0.9565  (high!)
    ============== ==== ==== ======= ===== ====================

    :Missing Attribute Values: None
    :Class Distribution: 33.3% for each of 3 classes.
    :Creator: R.A. Fisher
    :Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)
    :Date: July, 1988

The famous Iris database, first used by Sir R.A. Fisher. The dataset is taken
from Fisher's paper. Note that it's the same as in R, but not as in the UCI
Machine Learning Repository, which has two wrong data points.

This is perhaps the best known database to be found in the
pattern recognition literature.  Fisher's paper is a classic in the field and
is referenced frequently to this day.  (See Duda & Hart, for example.)  The
data set contains 3 classes of 50 instances each, where each class refers to a
type of iris plant.  One class is linearly separable from the other 2; the
latter are NOT linearly separable from each other.

.. topic:: References

   - Fisher, R.A. "The use of multiple measurements in taxonomic problems"
     Annual Eugenics, 7, Part II, 179-188 (1936); also in "Contributions to
     Mathematical Statistics" (John Wiley, NY, 1950).
   - Duda, R.O., & Hart, P.E. (1973) Pattern Classification and Scene Analysis.
     (Q327.D83) John Wiley & Sons.  ISBN 0-471-22361-1.  See page 218.
   - Dasarathy, B.V. (1980) "Nosing Around the Neighborhood: A New System
     Structure and Classification Rule for Recognition in Partially Exposed
     Environments".  IEEE Transactions on Pattern Analysis and Machine
     Intelligence, Vol. PAMI-2, No. 1, 67-71.
   - Gates, G.W. (1972) "The Reduced Nearest Neighbor Rule".  IEEE Transactions
     on Information Theory, May 1972, 431-433.
   - See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al"s AUTOCLASS II
     conceptual clustering system finds 3 classes in the data.
   - Many, many more ...
(150, 4)
[ 10.81782088   3.7107283  116.31261309  67.0483602 ]

这里我们可以看到鸢尾花有4个特征,分别为萼片长度、萼片宽度、花瓣长度、花瓣宽度。SelectKBest有两个参数,一个是score_func,一个则是k.我们可以理解为,score_func是函数,它的作用是给特征进行打分,然后从高到底选取特征。那么特征该选取多少个呢?后面的k就是限定特征个数的。这里我们是选择了鸢尾花的所有特征,即4个。我们这里给特征打分的函数为chi2,chi2为卡方检验函数,就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。这里的理论值是用极大似然估计推断出来的,即求概率的最大值,有关极大似然估计的内容请参考高等数学整理(三) 。通过上面的结果,我们可以看出鸢尾花的4个特征中,萼片宽度的卡方值是最小的,也就是实际观测值与理论推断值偏离最小的。

现在我们来看一下另外一个特征打分函数f_regression

from sklearn import datasets
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.feature_selection import f_regression
import matplotlib.pyplot as plt

if __name__ == "__main__":

    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    # print(iris.DESCR)
    sel = SelectKBest(chi2, k='all')
    sel.fit(X, y)
    # print(sel.fit_transform(X, y).shape)
    # print(sel.scores_)
    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    sel = SelectKBest(f_regression, k='all')
    sel.fit_transform(X, y)
    print(boston.feature_names)
    print(sel.scores_)
    plt.figure(figsize=(12, 6))
    plt.bar(range(X.shape[1]), sel.scores_)
    plt.xticks(range(X.shape[1]), boston.feature_names)
    plt.show()

运行结果

['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
 'B' 'LSTAT']
[ 89.48611476  75.2576423  153.95488314  15.97151242 112.59148028
 471.84673988  83.47745922  33.57957033  85.91427767 141.76135658
 175.10554288  63.05422911 601.61787111]

这里f_regression是将每个特征单独拿出来和标签target(代码中即y值)计算线性相关系数,即每个特征前面的权值,并按照F Score来排序(有关F Score请参考机器学习算法整理(三) 中的F1 Score)。最后输出概率值p。 特征选择就是基于单个特征和标签的相关程度。此项相关程度越高,就越应该被选择。在上图中,我们可以看到跟标签相关程度最高的为LSTAT。

利用线性模型

import numpy as np
from sklearn import datasets
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.feature_selection import f_regression
from sklearn.svm import LinearSVR
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectFromModel
import matplotlib.pyplot as plt

if __name__ == "__main__":

    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    # print(iris.DESCR)
    sel = SelectKBest(chi2, k='all')
    sel.fit(X, y)
    # print(sel.fit_transform(X, y).shape)
    # print(sel.scores_)
    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    sel = SelectKBest(f_regression, k='all')
    sel.fit_transform(X, y)
    # print(boston.feature_names)
    # print(sel.scores_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), sel.scores_)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    std = StandardScaler()
    X_std = std.fit_transform(X)
    lsvr = LinearSVR()
    lsvr.fit(X_std, y)
    print(boston.feature_names)
    print(lsvr.coef_)
    plt.figure(figsize=(12, 6))
    plt.bar(range(X.shape[1]), np.abs(lsvr.coef_))
    plt.xticks(range(X.shape[1]), boston.feature_names)
    plt.show()

运行结果

['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
 'B' 'LSTAT']
[-1.19432846  0.81067485  0.09053901  0.30831221 -0.83385017  3.6694101
 -0.69311065 -1.99845054  1.45206326 -1.79285181 -1.52995736  1.01806044
 -2.20265351]

这里我们使用的模型是支撑向量机SVM的线形回归模型(有关支撑向量机SVM的内容请参考机器学习算法整理(三) ),通过该图,我们可以看出线性系数中权值最大两个特征为RM和LSTAT。

迭代消除

import numpy as np
from sklearn import datasets
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.feature_selection import f_regression
from sklearn.svm import LinearSVR
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectFromModel
import matplotlib.pyplot as plt

if __name__ == "__main__":

    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    # print(iris.DESCR)
    sel = SelectKBest(chi2, k='all')
    sel.fit(X, y)
    # print(sel.fit_transform(X, y).shape)
    # print(sel.scores_)
    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    sel = SelectKBest(f_regression, k='all')
    sel.fit_transform(X, y)
    # print(boston.feature_names)
    # print(sel.scores_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), sel.scores_)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    std = StandardScaler()
    X_std = std.fit_transform(X)
    lsvr = LinearSVR()
    lsvr.fit(X_std, y)
    # print(boston.feature_names)
    # print(lsvr.coef_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), np.abs(lsvr.coef_))
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    et_reg = ExtraTreesRegressor(n_estimators=50)
    et_reg.fit(X, y)
    print(et_reg.feature_importances_)
    plt.figure(figsize=(12, 6))
    plt.bar(range(X.shape[1]), et_reg.feature_importances_)
    plt.xticks(range(X.shape[1]), boston.feature_names)
    plt.show()

运行结果

[0.02889243 0.00458076 0.04631207 0.01420856 0.04125324 0.3199427
 0.02337288 0.03524556 0.02377695 0.03500072 0.06598595 0.01713287
 0.34429531]

这里我们使用的模型是ExtraTrees的回归模型(有关ExtraTrees的详细内容请参考机器学习算法整理(四) ),它使用了50个决策树子模型来进行训练,它首先根据模型在连续特征上被计算得出一个权重,然后通过阈值把特征进行筛选,不断迭代这个过程,直至所有的特征达到我们的要求。最终得出了上图的特征重要性的柱状图,其中最为重要的依然是LSTAT和RM。

排列重要性

import numpy as np
from sklearn import datasets
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.feature_selection import f_regression
from sklearn.svm import LinearSVR
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.inspection import permutation_importance
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectFromModel
import matplotlib.pyplot as plt

if __name__ == "__main__":

    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    # print(iris.DESCR)
    sel = SelectKBest(chi2, k='all')
    sel.fit(X, y)
    # print(sel.fit_transform(X, y).shape)
    # print(sel.scores_)
    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    sel = SelectKBest(f_regression, k='all')
    sel.fit_transform(X, y)
    # print(boston.feature_names)
    # print(sel.scores_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), sel.scores_)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    std = StandardScaler()
    X_std = std.fit_transform(X)
    lsvr = LinearSVR()
    lsvr.fit(X_std, y)
    # print(boston.feature_names)
    # print(lsvr.coef_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), np.abs(lsvr.coef_))
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    et_reg = ExtraTreesRegressor(n_estimators=50)
    et_reg.fit(X, y)
    # print(et_reg.feature_importances_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), et_reg.feature_importances_)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    result = permutation_importance(et_reg, X, y, n_repeats=10, random_state=0)
    print(result.importances_mean)
    plt.figure(figsize=(12, 6))
    plt.bar(range(X.shape[1]), result.importances_mean)
    plt.xticks(range(X.shape[1]), boston.feature_names)
    plt.show()

运行结果

[0.0178218  0.0009834  0.00921122 0.00587673 0.04915493 0.43159941
 0.01958666 0.02487382 0.00733652 0.02427831 0.02770072 0.01183865
 0.77854265]

permutation_importance的作用是将特征进行打散,重新排序,n_repeats=10是打散10次,这里是将全部特征打散。上图中,我们可以看到经过打散后,依然是LSTAT和RM的重要性最高。这种情况下,类似于把特征剔除掉,然后看它的精度如何进行升高或者下降。现在我们来看一下针对某一个特征来看它原始特征重要性和打乱标签之后的特征重要性。

import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.feature_selection import f_regression
from sklearn.svm import LinearSVR
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.inspection import permutation_importance
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestRegressor
from sklearn.feature_selection import SelectFromModel
import matplotlib.pyplot as plt
import time

if __name__ == "__main__":

    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    # print(iris.DESCR)
    sel = SelectKBest(chi2, k='all')
    sel.fit(X, y)
    # print(sel.fit_transform(X, y).shape)
    # print(sel.scores_)
    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    sel = SelectKBest(f_regression, k='all')
    sel.fit_transform(X, y)
    # print(boston.feature_names)
    # print(sel.scores_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), sel.scores_)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    std = StandardScaler()
    X_std = std.fit_transform(X)
    lsvr = LinearSVR()
    lsvr.fit(X_std, y)
    # print(boston.feature_names)
    # print(lsvr.coef_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), np.abs(lsvr.coef_))
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    et_reg = ExtraTreesRegressor(n_estimators=50)
    et_reg.fit(X, y)
    # print(et_reg.feature_importances_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), et_reg.feature_importances_)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    result = permutation_importance(et_reg, X, y, n_repeats=10, random_state=0)
    # print(result.importances_mean)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), result.importances_mean)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()

    def get_feature_importances(data, target, feaure_name, shuffle, seed=None):
        # 对数据集计算特征重要性
        y = target.copy()
        if shuffle:
            np.random.shuffle(y)
        clf = RandomForestRegressor()
        clf.fit(data, y)
        imp_df = pd.DataFrame()
        imp_df["feature"] = feaure_name
        imp_df["importance_gain"] = clf.feature_importances_
        return imp_df

    # 记录正常标签下特征的重要性
    actual_imp_df = get_feature_importances(X, y, boston.feature_names, False)
    null_imp_df = pd.DataFrame()
    # 标签打乱次数
    nb_runs = 40
    start = time.time()
    dsp = ""
    for i in range(nb_runs):
        # 打乱标签后的特征重要性
        imp_df = get_feature_importances(X, y, boston.feature_names, True)
        imp_df["run"] = i + 1
        null_imp_df = pd.concat([null_imp_df, imp_df], axis=0)
        for l in range(len(dsp)):
            print('\b', end='', flush=True)
        spent = (time.time() - start) / 60
        dsp = "Dont with %4d of %4d (Spent %5.1f min)" % (i + 1, nb_runs, spent)
        print(dsp)
    feat = "RM"
    # 绘制RM特征的特征重要性,红色部分为原始特征重要性
    ax = plt.hist(null_imp_df[null_imp_df['feature'] == feat]['importance_gain'], bins=nb_runs)
    plt.vlines(x=actual_imp_df.loc[actual_imp_df['feature'] == feat, 'importance_gain'].mean(),
               ymin=0, ymax=np.max(ax[0]), color='r', linewidth=10, label='Real Target')
    plt.show()

运行结果

Dont with    1 of   40 (Spent   0.0 min)
Dont with    2 of   40 (Spent   0.0 min)
Dont with    3 of   40 (Spent   0.0 min)
Dont with    4 of   40 (Spent   0.0 min)
Dont with    5 of   40 (Spent   0.0 min)
Dont with    6 of   40 (Spent   0.0 min)
Dont with    7 of   40 (Spent   0.0 min)
Dont with    8 of   40 (Spent   0.0 min)
Dont with    9 of   40 (Spent   0.0 min)
Dont with   10 of   40 (Spent   0.0 min)
Dont with   11 of   40 (Spent   0.0 min)
Dont with   12 of   40 (Spent   0.1 min)
Dont with   13 of   40 (Spent   0.1 min)
Dont with   14 of   40 (Spent   0.1 min)
Dont with   15 of   40 (Spent   0.1 min)
Dont with   16 of   40 (Spent   0.1 min)
Dont with   17 of   40 (Spent   0.1 min)
Dont with   18 of   40 (Spent   0.1 min)
Dont with   19 of   40 (Spent   0.1 min)
Dont with   20 of   40 (Spent   0.1 min)
Dont with   21 of   40 (Spent   0.1 min)
Dont with   22 of   40 (Spent   0.1 min)
Dont with   23 of   40 (Spent   0.1 min)
Dont with   24 of   40 (Spent   0.1 min)
Dont with   25 of   40 (Spent   0.1 min)
Dont with   26 of   40 (Spent   0.1 min)
Dont with   27 of   40 (Spent   0.1 min)
Dont with   28 of   40 (Spent   0.1 min)
Dont with   29 of   40 (Spent   0.1 min)
Dont with   30 of   40 (Spent   0.1 min)
Dont with   31 of   40 (Spent   0.1 min)
Dont with   32 of   40 (Spent   0.1 min)
Dont with   33 of   40 (Spent   0.1 min)
Dont with   34 of   40 (Spent   0.1 min)
Dont with   35 of   40 (Spent   0.1 min)
Dont with   36 of   40 (Spent   0.2 min)
Dont with   37 of   40 (Spent   0.2 min)
Dont with   38 of   40 (Spent   0.2 min)
Dont with   39 of   40 (Spent   0.2 min)
Dont with   40 of   40 (Spent   0.2 min)

在这里我们可以看到,RM这个特征的原始特征重要性要远远高于打乱标签之后的特征重要性。我们再来看一下CRIM特征的原始特征重要性和打乱标签之后的特征重要性的对比

import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.feature_selection import f_regression
from sklearn.svm import LinearSVR
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.inspection import permutation_importance
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestRegressor
from sklearn.feature_selection import SelectFromModel
import matplotlib.pyplot as plt
import time

if __name__ == "__main__":

    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    # print(iris.DESCR)
    sel = SelectKBest(chi2, k='all')
    sel.fit(X, y)
    # print(sel.fit_transform(X, y).shape)
    # print(sel.scores_)
    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    sel = SelectKBest(f_regression, k='all')
    sel.fit_transform(X, y)
    # print(boston.feature_names)
    # print(sel.scores_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), sel.scores_)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    std = StandardScaler()
    X_std = std.fit_transform(X)
    lsvr = LinearSVR()
    lsvr.fit(X_std, y)
    # print(boston.feature_names)
    # print(lsvr.coef_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), np.abs(lsvr.coef_))
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    et_reg = ExtraTreesRegressor(n_estimators=50)
    et_reg.fit(X, y)
    # print(et_reg.feature_importances_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), et_reg.feature_importances_)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    result = permutation_importance(et_reg, X, y, n_repeats=10, random_state=0)
    # print(result.importances_mean)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), result.importances_mean)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()

    def get_feature_importances(data, target, feaure_name, shuffle, seed=None):
        # 对数据集计算特征重要性
        y = target.copy()
        if shuffle:
            np.random.shuffle(y)
        clf = RandomForestRegressor()
        clf.fit(data, y)
        imp_df = pd.DataFrame()
        imp_df["feature"] = feaure_name
        imp_df["importance_gain"] = clf.feature_importances_
        return imp_df

    # 记录正常标签下特征的重要性
    actual_imp_df = get_feature_importances(X, y, boston.feature_names, False)
    null_imp_df = pd.DataFrame()
    # 标签打乱次数
    nb_runs = 40
    start = time.time()
    dsp = ""
    for i in range(nb_runs):
        # 打乱标签后的特征重要性
        imp_df = get_feature_importances(X, y, boston.feature_names, True)
        imp_df["run"] = i + 1
        null_imp_df = pd.concat([null_imp_df, imp_df], axis=0)
        for l in range(len(dsp)):
            print('\b', end='', flush=True)
        spent = (time.time() - start) / 60
        dsp = "Dont with %4d of %4d (Spent %5.1f min)" % (i + 1, nb_runs, spent)
        print(dsp)
    feat = "RM"
    # 绘制RM特征的特征重要性,红色部分为原始特征重要性
    # ax = plt.hist(null_imp_df[null_imp_df['feature'] == feat]['importance_gain'], bins=nb_runs)
    # plt.vlines(x=actual_imp_df.loc[actual_imp_df['feature'] == feat, 'importance_gain'].mean(),
    #            ymin=0, ymax=np.max(ax[0]), color='r', linewidth=10, label='Real Target')
    # plt.show()
    feat = "CRIM"
    ax = plt.hist(null_imp_df[null_imp_df['feature'] == feat]['importance_gain'], bins=nb_runs)
    plt.vlines(x=actual_imp_df.loc[actual_imp_df['feature'] == feat, 'importance_gain'].mean(),
               ymin=0, ymax=np.max(ax[0]), color='r', linewidth=10, label='Real Target')
    plt.show()

运行结果

通过结果,我们看到CRIM特征就不那么重要了,因为它原始特征重要性反而要远远低于打乱标签之后的特征重要性。

查看某一个特征的分布情况

import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.feature_selection import f_regression
from sklearn.svm import LinearSVR
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.inspection import permutation_importance
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestRegressor
from sklearn.feature_selection import SelectFromModel
import matplotlib.pyplot as plt
import time
import seaborn as sns

if __name__ == "__main__":

    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    # print(iris.DESCR)
    sel = SelectKBest(chi2, k='all')
    sel.fit(X, y)
    # print(sel.fit_transform(X, y).shape)
    # print(sel.scores_)
    boston = datasets.load_boston()
    X = boston.data
    y = boston.target
    sel = SelectKBest(f_regression, k='all')
    sel.fit_transform(X, y)
    # print(boston.feature_names)
    # print(sel.scores_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), sel.scores_)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    std = StandardScaler()
    X_std = std.fit_transform(X)
    lsvr = LinearSVR()
    lsvr.fit(X_std, y)
    # print(boston.feature_names)
    # print(lsvr.coef_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), np.abs(lsvr.coef_))
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    et_reg = ExtraTreesRegressor(n_estimators=50)
    et_reg.fit(X, y)
    # print(et_reg.feature_importances_)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), et_reg.feature_importances_)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()
    result = permutation_importance(et_reg, X, y, n_repeats=10, random_state=0)
    # print(result.importances_mean)
    # plt.figure(figsize=(12, 6))
    # plt.bar(range(X.shape[1]), result.importances_mean)
    # plt.xticks(range(X.shape[1]), boston.feature_names)
    # plt.show()

    def get_feature_importances(data, target, feaure_name, shuffle, seed=None):
        # 对数据集计算特征重要性
        y = target.copy()
        if shuffle:
            np.random.shuffle(y)
        clf = RandomForestRegressor()
        clf.fit(data, y)
        imp_df = pd.DataFrame()
        imp_df["feature"] = feaure_name
        imp_df["importance_gain"] = clf.feature_importances_
        return imp_df

    # 记录正常标签下特征的重要性
    actual_imp_df = get_feature_importances(X, y, boston.feature_names, False)
    null_imp_df = pd.DataFrame()
    # 标签打乱次数
    nb_runs = 40
    start = time.time()
    dsp = ""
    # for i in range(nb_runs):
    #     # 打乱标签后的特征重要性
    #     imp_df = get_feature_importances(X, y, boston.feature_names, True)
    #     imp_df["run"] = i + 1
    #     null_imp_df = pd.concat([null_imp_df, imp_df], axis=0)
    #     for l in range(len(dsp)):
    #         print('\b', end='', flush=True)
    #     spent = (time.time() - start) / 60
    #     dsp = "Dont with %4d of %4d (Spent %5.1f min)" % (i + 1, nb_runs, spent)
    #     print(dsp)
    # feat = "RM"
    # 绘制RM特征的特征重要性,红色部分为原始特征重要性
    # ax = plt.hist(null_imp_df[null_imp_df['feature'] == feat]['importance_gain'], bins=nb_runs)
    # plt.vlines(x=actual_imp_df.loc[actual_imp_df['feature'] == feat, 'importance_gain'].mean(),
    #            ymin=0, ymax=np.max(ax[0]), color='r', linewidth=10, label='Real Target')
    # plt.show()
    feat = "CRIM"
    # ax = plt.hist(null_imp_df[null_imp_df['feature'] == feat]['importance_gain'], bins=nb_runs)
    # plt.vlines(x=actual_imp_df.loc[actual_imp_df['feature'] == feat, 'importance_gain'].mean(),
    #            ymin=0, ymax=np.max(ax[0]), color='r', linewidth=10, label='Real Target')
    # plt.show()
    col = "RM"
    df = pd.DataFrame(X)
    df.columns = boston.feature_names
    print(df.head())
    sns.distplot(df[col])
    plt.show()

运行结果

      CRIM    ZN  INDUS  CHAS    NOX  ...  RAD    TAX  PTRATIO       B  LSTAT
0  0.00632  18.0   2.31   0.0  0.538  ...  1.0  296.0     15.3  396.90   4.98
1  0.02731   0.0   7.07   0.0  0.469  ...  2.0  242.0     17.8  396.90   9.14
2  0.02729   0.0   7.07   0.0  0.469  ...  2.0  242.0     17.8  392.83   4.03
3  0.03237   0.0   2.18   0.0  0.458  ...  3.0  222.0     18.7  394.63   2.94
4  0.06905   0.0   2.18   0.0  0.458  ...  3.0  222.0     18.7  396.90   5.33

[5 rows x 13 columns]

通过图像我们可以看到RM特征近似满足一种正态分布。

Kaggle赛题分析

  Instant Gratification

数据下载页面https://www.kaggle.com/c/instant-gratification/data

这是一个二分类的问题,使用AUC进行评价(即ROC曲线下的面积,可以参考机器学习算法整理(三) 中的ROC曲线),对于测试集的样本,需要预测对应的概率值,并与真实的标签进行评价。我们首先来看一下该赛题的数据情况

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    print(train.shape)
    print(test.shape)
    print(train.head())
    print(test.head())

运行结果

(262144, 258)
(131072, 257)
                                 id  muggy-smalt-axolotl-pembus  dorky-peach-sheepdog-ordinal  slimy-seashell-cassowary-goose  snazzy-harlequin-chicken-distraction  frumpy-smalt-mau-ordinal  stealthy-beige-pinscher-golden  chummy-cream-tarantula-entropy  hazy-emerald-cuttlefish-unsorted  nerdy-indigo-wolfhound-sorted  leaky-amaranth-lizard-sorted  ugly-tangerine-chihuahua-important  shaggy-silver-indri-fimbus  flaky-chocolate-beetle-grandmaster  squirrely-harlequin-sheep-sumble  freaky-tan-angelfish-noise  lousy-plum-penguin-sumble  bluesy-rose-wallaby-discard  baggy-copper-oriole-dummy  stealthy-scarlet-hound-fepid  greasy-cinnamon-bonobo-contributor  cranky-cardinal-dogfish-ordinal  snippy-auburn-vole-learn  greasy-sepia-coral-dataset  flabby-tangerine-fowl-entropy  lousy-smalt-pinscher-dummy  bluesy-brass-chihuahua-distraction  goopy-eggplant-indri-entropy  homey-sepia-bombay-sorted  homely-ruby-bulldog-entropy  hasty-blue-sheep-contributor  blurry-wisteria-oyster-master  \
0  707b395ecdcbb4dc2eabea00e4d1b179                   -2.070654                      1.018160                        0.228643                              0.857221                  0.052271                        0.230303                       -6.385090                          0.439369                      -0.721946                     -0.227027                            0.575964                    1.541908                            1.745286                         -0.624271                    3.600958                   1.176489                    -0.182776                  -0.228391                      1.682263                           -0.833236                        -4.377688                 -5.372410                   -0.477742                      -0.179005                   -0.516475                            0.127391                     -0.857591                  -0.461500                     2.160303                     -2.118371                       0.515493   
1  5880c03c6582a7b42248668e56b4bdec                   -0.491702                      0.082645                       -0.011193                              1.071266                 -0.346347                       -0.082209                        0.110579                         -0.382374                      -0.229620                      0.783980                           -1.280579                   -1.003480                           -7.753201                         -1.320547                    0.919078                  -1.036068                     0.030213                   0.910172                     -0.905345                            0.646641                        -0.465291                 -0.531735                   -0.756781                       0.193724                    0.224277                           -0.474412                      1.885805                   0.205439                    -6.481422                      1.035620                      -0.453623   
2  4ccbcb3d13e5072ff1d9c61afe2c4f77                   -1.680473                      0.860529                       -1.076195                              0.740124                  3.678445                        0.288558                        0.515875                          0.920590                      -1.223277                     -1.029780                           -2.203397                   -7.088717                            0.438218                         -0.848173                    1.542666                  -2.166858                    -0.867670                  -0.980947                      0.567793                            1.323430                        -2.076700                 -0.291598                   -1.564816                      -8.718695                    0.340144                           -0.566402                      0.844324                   0.816421                    -1.019114                     -0.881431                      -2.285710   
3  e350f17a357f12a1941f0837afb7eb8d                    0.183774                      0.919134                       -0.946958                              0.918492                  0.862278                        1.155287                        0.911106                          0.562598                      -1.349685                     -1.182729                            0.003159                   -0.626847                            0.368980                          1.560784                    0.502851                  -0.108050                     0.633208                  -0.411502                     -3.201592                           -0.710612                         0.786816                  0.500979                   -1.040048                      -1.369170                    0.987666                           -0.681838                     -0.331372                   2.254289                    -0.009330                      2.007067                       1.203750   
4  a8f910ea6075b6376af079055965ff68                   -0.203933                     -0.177252                        0.368074                             -0.701320                 -1.104391                        0.735760                        0.894273                         -1.375826                      -5.144946                     -2.048711                            0.629773                   -4.252669                           -0.087420                         -0.794367                   -1.063963                   0.115997                     0.895180                   3.184848                      2.057840                           -0.950821                         0.961059                 -1.837828                   -0.437156                      -0.828433                    0.373747                           -0.099787                     -0.976280                  -0.165921                     3.297221                      3.914132                      -4.971376   

   snoopy-auburn-dogfish-expert  stinky-maroon-blue-kernel  bumpy-amaranth-armadillo-important  slaphappy-peach-oyster-master  dorky-tomato-ragdoll-dataset  messy-mauve-wolverine-ordinal  geeky-pumpkin-moorhen-important  crabby-teal-otter-unsorted  flaky-goldenrod-bat-noise  beady-aquamarine-affenpinscher-grandmaster  pasty-auburn-rat-entropy  snappy-gamboge-caterpillar-dummy  breezy-persimmon-newt-noise  baggy-mustard-collie-hint  sunny-red-weasel-hint  cheeky-red-armadillo-unsorted  wiggy-magnolia-wolfhound-sorted  flimsy-chestnut-guppy-important  beady-champagne-bullfrog-grandmaster  lanky-emerald-alligator-kernel  blurry-flax-sloth-fepid  scanty-viridian-guppy-grandmaster  blurry-amber-moth-dataset  grumpy-zucchini-kudu-kernel  chewy-myrtle-wasp-important  snappy-lemon-okapi-ordinal  cranky-eggplant-oyster-sumble  snappy-pear-quoll-unsorted  crappy-cream-shrew-unsorted  bluesy-amber-walrus-fepid  clammy-xanthic-affenpinscher-golden  slimy-blue-alligator-master  \
0                     -1.201493                  -0.027377                           -1.154024                       0.753204                     -0.179651                      -0.807341                        -1.663626                    0.893806                   1.650000                                    0.309518                  0.606264                         -3.233735                     1.731866                   0.142344              -0.056539                      -0.332911                         0.001577                        -0.155122                              0.832088                       -0.174581                 4.642026                          -1.337379                  -1.098482                    -1.227801                    -1.204695                   -0.722511                       0.130554                   -0.974445                     0.610632                  -0.361204                             0.761463                     0.503809   
1                      0.375936                  -0.320670                           -0.144646                      -0.220129                      0.577826                      -0.360512                        -0.600107                    0.008111                   0.917906                                   -0.614316                 -1.789679                         -0.764088                    -0.211571                  -0.533852              -0.610511                       0.366837                        -0.616596                         0.535743                             -3.065464                       -0.486983                 0.193756                           0.973714                  -0.707673                    -0.249587                     1.363319                    0.879810                       1.918398                   -1.085278                    -4.869160                  -1.155942                             0.523677                    -0.432738   
2                     -0.090958                  -0.898440                           -0.584417                      -0.143660                     -0.182084                       0.798516                         0.010756                   -0.347155                  -1.668020                                   -5.847107                  1.251069                          1.400727                    -1.475952                  -1.974679               0.224277                      -0.242403                        -0.468501                         0.973093                              0.388349                       -0.269459                 0.495734                           5.186654                   0.528597                     1.206373                     5.057522                    3.863989                       0.548737                    0.185601                    -0.894563                   1.562132                             7.785312                     1.080415   
3                     -2.003928                  -0.566088                            0.223452                       0.434202                     -1.203766                      -0.103490                         0.441111                    1.818458                  -0.463466                                    0.552149                 -0.737298                          0.188320                     0.807423                   0.305469               1.033293                       0.679218                        -0.142730                         0.983082                             -0.515780                       -1.004351                -0.310906                          -0.369070                   1.360424                    -0.770308                    -4.153366                    0.928509                       0.048843                    0.181376                    -0.694007                   1.491793                             1.128002                     0.361412   
4                     -0.286520                  -0.160133                           -3.301453                      -1.021032                     -0.562744                       0.574065                        -0.368194                   -0.507458                   0.516999                                    0.575110                 -0.786699                         -0.044415                    -2.097466                  -0.457346              -0.300018                       1.194527                        -1.915462                        -1.049263                              1.609096                       -0.329822                 0.715613                           0.224643                  -0.734195                     1.375845                     0.036798                   -1.535526                      -0.087535                   -0.864295                     3.808136                   0.037456                            -0.918130                    -0.110499   

   hazy-tan-schnauzer-hint  breezy-aquamarine-sloth-sorted  tasty-indigo-termite-ordinal  thirsty-gamboge-dragonfly-kernel  gloppy-turquoise-quoll-goose  gamy-lilac-kakapo-expert  geeky-amethyst-quetzal-unsorted  hilly-lime-vole-novice  baggy-champagne-capuchin-discard  dorky-amaranth-eel-grandmaster  hasty-pink-iguana-noise  snoopy-red-zonkey-unsorted  tasty-periwinkle-fousek-unsorted  homey-scarlet-javanese-novice  woozy-crimson-beetle-contributor  snippy-burgundy-leopard-expert  slimy-purple-gorilla-goose  snappy-brass-malamute-entropy  greasy-rust-birman-kernel  goopy-copper-fousek-distraction  snazzy-cerise-donkey-distraction  squeaky-khaki-lionfish-distraction  snazzy-malachite-llama-unsorted  nerdy-violet-rat-pembus  clammy-scarlet-emu-important  lovely-sangria-koala-contributor  blurry-sangria-saola-gaussian  paltry-seashell-neanderthal-master  crappy-pumpkin-saola-grandmaster  smelly-tangerine-horse-gaussian  cranky-magenta-mammoth-distraction  hazy-champagne-duck-entropy  \
0                -0.005380                       -1.027773                      0.572145                          1.066340                     -1.347895                 -1.031647                         1.885227               -1.327443                          0.530717                       -6.788220                -1.030781                    0.853590                         -1.630981                       0.298126                         -0.579005                       -1.452427                   -0.849764                       0.205906                  -2.025930                         1.801303                          7.548868                            0.323314                         2.077474                -0.592783                      0.039764                          1.539057                      -0.074971                           -1.863964                         -0.106399                         0.599671                           -0.159026                     0.484084   
1                 0.135867                       -1.856453                     -0.222068                          0.772152                     -0.174130                 -3.141463                        -0.853782                0.319665                         -1.841394                        0.248445                 0.809283                   -0.438237                          0.283969                      -0.098946                         -0.616642                        0.995292                   -0.933246                      -1.357744                  -0.283531                         1.148947                          0.332596                            2.881187                         0.287585                -0.559672                      0.197195                          1.738509                      -0.205148                            1.203382                         -0.746569                         1.602711                            0.664017                    -0.164901   
2                -1.004227                       -1.547938                      0.084567                          0.186509                     -0.976116                  0.791684                         2.043556               -0.722079                          0.566875                       -1.382457                 1.166475                   -0.554714                          6.147265                      -0.099940                          0.734238                        0.140148                   -1.114445                      -0.508294                   0.545578                        -0.901261                         -0.712283                           -0.760790                        -3.756887                 2.046554                     -1.436294                          1.062161                      -0.281638                           -0.708392                         -0.082752                         1.124683                           -0.677607                     2.667531   
3                -0.753193                        2.289007                     -0.972631                          0.363762                     -0.759218                 -0.899975                        -0.621421                2.136767                          0.695792                        0.503392                 0.246935                   -1.083749                          1.294544                      -0.742235                         -0.265650                       -1.882800                    1.489419                      -2.231415                  -1.070952                        -1.249194                          0.543802                            0.757066                        -3.028782                -0.899778                      1.320893                         -0.047597                       2.009922                            0.722767                          0.382886                         0.441782                           -0.082115                     0.301398   
4                 0.423576                       -0.581968                     -0.586866                         -0.483344                      0.044207                 -0.980623                         0.014964               -0.243052                         -2.107152                        0.149472                 0.341387                   -0.809383                          1.446912                       0.260959                         -4.350094                       -0.154140                    0.205470                      -4.689017                   1.726269                         0.274414                         -0.831961                           -0.884224                        -1.207014                -0.897429                      0.077336                          1.056850                      -0.357727                           -1.198581                         -0.088880                         0.436010                           -1.057181                     0.190139   

   flaky-cream-peccary-sorted  pokey-russet-hippopotamus-master  leaky-apricot-mammoth-unsorted  flaky-brass-grasshopper-sorted  skanky-cobalt-dolphin-sorted  zippy-platinum-gharial-kernel  sleazy-cinnamon-frog-grandmaster  gloppy-denim-ostrich-gaussian  smelly-yellow-akbash-important  shaggy-sapphire-eel-unsorted  queasy-peach-bison-sumble  foggy-denim-hyrax-important  grumpy-bronze-capybara-sumble  ugly-green-earwig-noise  slimy-thistle-cuscus-hint  chummy-ruby-chinook-dataset  cranky-champagne-jackal-gaussian  lousy-wisteria-hornet-entropy  wheezy-harlequin-earwig-gaussian  tasty-buff-monkey-learn  droopy-razzmatazz-bordeaux-dummy  cozy-khaki-reindeer-golden  greasy-crimson-squid-grandmaster  dorky-turquoise-maltese-important  lousy-blue-buffalo-entropy  skinny-yellow-hedgehog-sumble  pasty-flax-octopus-dataset  pasty-sepia-eel-noise  seedy-charcoal-capybara-ordinal  cranky-ultramarine-swan-pembus  hasty-puce-fowl-fepid  sunny-purple-husky-noise  stuffy-periwinkle-zebu-discard  \
0                   -4.357288                          1.858291                       -1.774589                        0.893651                     -4.883752                      -0.587266                          1.015098                       0.657799                       -1.424420                      0.645373                   0.451990                     0.600586                       0.579618                -0.959323                   0.589639                     0.486472                          0.123132                      -0.225256                          1.149387                 1.097345                          1.353113                   -0.583056                         -0.633913                          -0.514233                    0.536684                      -0.556931                    1.732376              -0.091073                         1.660597                       -0.599171               1.544797                  0.087810                       -0.179408   
1                    1.744361                          2.198991                        2.176285                        0.577498                     -0.098448                       1.273574                          1.194926                       0.515115                       -4.323965                      0.082942                   2.622856                     1.525436                      -0.269331                 1.155202                  -2.112671                    -1.081542                         -1.131382                      -0.986882                         -0.097204                 0.033395                          1.154202                    1.325088                          0.762924                           0.972464                   -0.472049                       0.769512                   -0.337495               0.827151                        -0.553719                       -0.564801               0.093124                  0.089187                       -0.969923   
2                    2.576138                          4.361972                       -0.673070                       -0.955780                     -0.345319                      -0.327436                          0.863160                      -0.499290                       -0.597690                    -10.903609                  -0.670313                    -0.871585                      -0.565724                -1.671591                   0.661239                     0.893052                          0.426069                       0.504324                          0.043789                -0.868068                         -1.112474                    2.963865                         -0.484049                           5.143568                    0.512267                       0.375011                   -2.876266               0.595724                        -1.260307                       -1.198690               0.344866                 -0.716974                       -3.901460   
3                    0.111288                          0.607907                        0.309489                       -0.773829                      0.106844                       0.885484                          0.889733                      -0.903085                       -0.416075                     -0.768739                   0.848692                    -0.860890                       0.515174                 0.301836                   2.734497                     1.735822                          0.718210                      -0.196199                          2.776416                -0.762199                         -1.147988                   -1.877898                          0.017186                          -0.306313                   -1.346776                       0.125178                   -5.342613               1.687739                         0.765576                       -1.235149               5.569137                  0.030845                        0.258190   
4                   11.684000                         -1.703463                       -0.929897                        0.506565                     -1.576856                       1.335181                         -0.009109                      -0.950700                       -0.098688                     -0.295882                  -0.312410                     0.428461                       2.164973                -1.106360                   0.372681                     4.524241                         -1.464521                       0.392119                          1.992586                 6.422639                         -1.642018                    2.078129                         -2.149267                           0.406730                   -0.491269                       1.914721                    1.051611               0.311900                         0.764446                       -0.751212               0.178235                  0.961729                        0.742401   

   nerdy-teal-olm-fepid  jumpy-blue-bison-sorted  wiggy-denim-retriever-distraction  messy-cardinal-lemur-distraction  scanty-periwinkle-dhole-dataset  snazzy-purple-donkey-discard  skanky-carmine-rabbit-contributor  wheezy-red-iguana-entropy  gloppy-mauve-bonobo-important  breezy-magenta-loon-hint  skinny-ultramarine-cat-fimbus  trippy-harlequin-maltese-expert  breezy-myrtle-loon-discard  woolly-gold-millipede-fimbus  beady-lilac-hornet-expert  bluesy-amethyst-octopus-gaussian  dorky-cream-flamingo-novice  lanky-puce-opossum-dummy  wheezy-copper-turtle-magic  gimpy-asparagus-eagle-novice  randy-ivory-eleuth-discard  beady-orange-binturong-golden  zippy-harlequin-otter-grandmaster  cozy-vermilion-uguisu-grandmaster  slimy-plum-cassowary-master  seedy-chartreuse-whippet-hint  messy-zucchini-tiger-contributor  stealthy-yellow-lobster-goose  snazzy-cream-macaque-novice  muggy-pumpkin-scorpion-grandmaster  lovely-plum-goat-novice  ugly-tangerine-llama-goose  silly-tan-tapir-pembus  \
0             -1.140898                 1.339876                          -1.123674                         -0.555881                         0.612425                     -4.614333                          -0.359311                   1.979699                      -1.172032                 -0.577366                       0.380448                         1.763633                   -0.424897                      0.414207                   0.114629                          0.253938                    -1.001423                 -1.172575                          99                     -2.129433                   -0.213572                      -0.343172                          -1.977248                           0.564100                    -0.147027                       0.114595                          0.355708                      -1.339106                    -9.528836                            0.526540                 0.639663                   -0.697931               -0.537780   
1             -1.024448                 1.030610                          -2.646408                         -1.154700                         0.930220                     -0.771806                           1.155353                  -0.270181                       3.628937                  3.801267                       0.756964                         0.947734                   -1.065747                      0.224362                   0.216533                         -0.566911                     0.282022                 -0.605565                          52                     -1.862034                   -0.195022                      -3.144003                          -0.001198                           1.414032                     1.030095                      -0.602616                          0.801963                      -0.664781                    -1.603656                           -2.843368                 1.386197                   -0.398741                0.826964   
2             -0.796332                 0.483763                          -1.809363                         -0.207222                        -3.178291                     -4.521236                           1.624553                  -4.854950                      -0.861892                 -1.444696                      -2.344614                         0.517886                   -0.693762                     -0.795793                  -0.702753                         -1.112832                     0.533437                  2.172315                         230                     -0.388617                   -0.894548                       1.421390                           0.518489                          -0.474485                    -0.676251                       0.861237                          1.709012                       0.557768                     2.211843                            0.575634                 0.021596                    0.430356               -0.927799   
3             -0.891213                 0.076535                          -2.556990                         -0.417610                        -1.149345                      0.495319                           0.756380                   1.234397                       0.895879                 -1.776303                      -0.193408                         0.616414                   -3.026989                      3.094658                   2.920507                          0.444251                     0.233437                  0.317884                          78                      0.507401                    1.635920                      -0.750713                          -0.116372                           0.628991                     0.303889                       0.212560                          0.573679                      -0.968400                    -1.148969                           -0.292701                 0.678302                   -0.506440               -0.915858   
4              2.359119                -0.090214                          -1.334332                          0.932416                         4.082370                      0.206766                          -5.737170                   1.459034                       0.461479                  0.458553                       1.151269                        -0.043022                    1.415144                      0.250890                  -0.165669                         -0.346944                    -0.450477                  0.587229                         497                      0.712690                   -4.284481                       2.691980                           0.200095                          -1.431459                     1.265944                      -0.406634                          0.627552                       0.861026                    -1.069787                            1.128022                -0.820645                   -0.741032               -1.302706   

   stuffy-aquamarine-audemer-fimbus  cheeky-plum-fox-noise  snoopy-heliotrope-squid-dataset  slimy-azure-molly-sumble  skanky-puce-discus-contributor  flimsy-magnolia-gopher-learn  paltry-sangria-lemur-fepid  leaky-grey-gerbil-sorted  craggy-maroon-civet-grandmaster  wiggy-cinnamon-gecko-important  skimpy-chocolate-dog-learn  nippy-jade-squirt-important  whiny-flax-sloth-learn  freaky-olive-insect-ordinal  boozy-amethyst-tarsier-dataset  dorky-rose-whale-novice  bumpy-amaranth-bonobo-gaussian  squirrely-apricot-goat-hint  lanky-coral-moorhen-expert  greasy-scarlet-paradise-goose  lousy-asparagus-tiger-discard  smelly-brown-deer-entropy  stealthy-chocolate-urchin-kernel  flabby-beige-serval-noise  skinny-indigo-tarantula-expert  zippy-cerise-weasel-contributor  nippy-pumpkin-rhinoceros-entropy  pretty-copper-insect-discard  grumpy-sapphire-akbash-fimbus  pasty-aquamarine-numbat-pembus  woolly-cinnabar-schnauzer-important  gloppy-buff-frigatebird-dataset  \
0                          1.329186               0.298338                        -1.752691                  1.211202                        1.796396                     -1.060946                    1.027946                  1.474950                         1.973263                        2.862423                   -0.351851                    -0.097177                1.619941                     1.016063                        1.536571                 1.070524                       -0.575493                    -3.803073                   -1.257520                       1.343795                       1.264730                  -2.741327                          0.593753                  -0.087197                       -3.356074                         0.767178                          1.228212                      1.322002                       0.507285                        0.736602                             5.543320                        -1.082307   
1                         -0.548586               0.678341                        -0.474178                 -1.347827                        0.548735                      1.304889                   -5.790101                  0.012328                         0.937329                        0.769349                    0.073879                     1.610341               -2.726307                     1.482933                       -1.007178                -1.526059                        0.398816                    -1.133463                    0.454304                       0.005067                       1.469336                   1.131559                         -0.502700                   2.998568                       -0.756810                        -1.699495                          0.643661                     -6.342578                       1.400219                       -1.101425                             1.306083                        -0.859353   
2                         -0.002419               1.104153                         0.936531                 -0.662838                       -0.013847                     -1.417886                    1.113778                 -1.639511                        -0.065197                        0.212408                   -0.440199                     1.345180               -3.401518                     0.605927                        0.058099                 1.500211                       -0.921888                    -2.305319                    1.439357                      -0.616078                       1.697839                  -0.768171                          0.787801                  -2.063569                        0.553133                         0.422920                          1.453108                     -0.208211                      -1.615574                       -0.066702                             0.643706                        -0.150297   
3                         -0.995522               0.612331                        -0.839725                  0.486611                        0.869310                     -1.744938                    0.579610                  5.628181                        -2.808686                       -1.542583                   -2.538661                    -1.833676                1.014349                    -0.731777                        1.851379                -2.548442                        2.119771                     0.170102                   -0.996762                      -1.175882                      -9.291957                  -1.306994                         -0.191052                   0.831839                        0.573057                         0.230900                          0.276171                     -1.056044                       0.387026                       -1.048575                             2.246329                         0.280188   
4                         -0.026808               2.069452                         0.318903                  0.278381                       -3.327085                      0.505048                    0.215639                 -2.483492                         0.846969                       -0.778917                    0.668752                    -0.922905               -0.641937                     0.835375                        0.130850                -0.728591                        0.699709                    -0.631703                   -0.939349                      -0.727577                      -0.030972                   1.494273                          0.311502                   0.551069                        4.377710                        -2.010920                         -0.495441                     -0.413861                       0.323451                        0.320156                             0.392723                         0.178954   

   wheezy-lavender-catfish-master  gamy-plum-tarsier-kernel  flaky-crimson-wallaby-distraction  cheeky-pear-horse-fimbus  trippy-asparagus-bison-expert  lanky-aqua-bullfrog-important  stinky-olive-kiwi-golden  sickly-denim-oriole-important  gloppy-persimmon-bee-unsorted  stealthy-azure-gopher-hint  hasty-ivory-dragonfly-goose  flimsy-turquoise-fox-kernel  lousy-zucchini-seahorse-dummy  shabby-magenta-whippet-novice  chewy-lime-peccary-fimbus  nippy-burgundy-beagle-novice  gloppy-firebrick-moth-dataset  sleazy-russet-iguana-unsorted  surly-corn-tzu-kernel  skinny-myrtle-whippet-fepid  homey-tangerine-sloth-discard  blurry-green-dodo-important  skinny-champagne-mayfly-sorted  dorky-purple-kiwi-hint  beady-mauve-frog-distraction  surly-brass-maltese-ordinal  beady-asparagus-opossum-expert  beady-rust-impala-dummy  droopy-amethyst-dachshund-hint  homey-crimson-budgerigar-grandmaster  droopy-cardinal-impala-important  woozy-apricot-moose-hint  paltry-sapphire-labradoodle-dummy  \
0                        3.846636                  1.693520                           4.646467                 -0.606964                       1.336298                       0.388636                  1.977617                       0.182350                       0.931062                    1.551511                     0.934135                     1.524143                       0.903826                      -0.643473                  -2.165463                     -0.259864                       0.771034                       0.584247              -0.827726                     0.671904                      -0.049500                     0.411329                        0.641536               -0.672776                     -1.829848                     2.347131                        0.082462                -1.012654                        0.593752                              2.904654                         -0.428974                 -0.919979                           2.849575   
1                       -1.101898                  0.213296                           0.516100                  0.527879                       5.219464                       1.054285                 -0.492622                       2.317404                      -0.241299                   -1.990303                    -0.098240                    -1.228476                       0.014458                       0.701078                  -1.031409                     -1.064521                      -1.983304                      -0.854999              -0.971634                     0.070109                       0.140656                     0.383525                       -6.049974               -1.100929                      0.982205                    -1.161978                        0.532269                 1.133215                        0.003503                             -1.390962                          0.158572                  0.143794                          -0.317185   
2                        0.566030                  0.879212                           0.139291                 -0.731757                      -0.766107                      -3.533002                 -0.635935                      -1.819291                       1.258408                   -0.018671                     6.530939                    -0.553380                      -0.119952                      -0.577500                   0.237986                     -2.356678                      -0.216164                       0.594975               0.442379                     0.355281                      -0.179833                    -1.569518                        0.613893               -1.112918                      0.829467                     0.588236                        0.427946                -0.563037                       -0.103990                             -0.817698                          1.251046                 -0.977157                           2.732600   
3                       -1.414599                  0.514946                           1.894262                 -1.546181                      -0.350869                       0.152226                 -0.271501                      -2.398219                       0.540465                    0.684799                     1.863114                    -0.317542                       0.044589                       0.955111                  -0.675016                     -0.563553                      -0.499162                      -2.977191               0.776517                    -0.338233                      -0.455901                     0.116920                       -3.687659               -0.507528                     -2.231836                     0.833236                       -0.454226                -1.614694                        0.159948                             -0.150059                         -1.570599                  0.960839                           0.102214   
4                       -0.858666                  1.255822                           0.913598                  0.298375                       0.186737                       1.225314                 -0.824189                       0.038139                      -1.726554                    0.717916                     0.149110                     1.304326                      -0.678007                       0.038657                  -0.454787                     -0.718354                       1.881316                      -0.965415               0.306866                     1.337624                       0.377912                     0.180993                        0.423446               -0.769880                      0.178099                    -0.410396                       -1.184236                 1.681727                        0.589606                              0.064222                          0.258885                  0.560241                          -1.545597   

   crappy-carmine-eagle-entropy  greasy-magnolia-spider-grandmaster  crabby-carmine-flounder-sorted  skimpy-copper-fowl-grandmaster  hasty-seashell-woodpecker-hint  snappy-purple-bobcat-important  thirsty-carmine-corgi-ordinal  homely-auburn-reindeer-unsorted  crappy-beige-tiger-fepid  cranky-auburn-swan-novice  chewy-bistre-buzzard-expert  skinny-cyan-macaque-pembus  slimy-periwinkle-otter-expert  snazzy-burgundy-clam-novice  cozy-ochre-gorilla-gaussian  homey-sangria-wolfhound-dummy  snazzy-asparagus-hippopotamus-contributor  paltry-red-hamster-sorted  zippy-dandelion-insect-golden  baggy-coral-bandicoot-unsorted  goopy-lavender-wolverine-fimbus  wheezy-myrtle-mandrill-entropy  wiggy-lilac-lemming-sorted  gloppy-cerise-snail-contributor  woozy-silver-havanese-gaussian  jumpy-thistle-discus-sorted  muggy-turquoise-donkey-important  blurry-buff-hyena-entropy  bluesy-chocolate-kudu-fepid  gamy-white-monster-expert  target  
0                     -0.906744                            0.729459                        0.386140                        0.319814                       -0.407682                       -0.170667                      -1.242919                        -1.719046                 -0.132395                  -0.368991                    -5.112553                   -2.085988                      -0.897257                     1.080671                    -0.273262                       0.342824                                   0.640177                  -0.415298                      -0.483126                       -0.080799                         2.416224                        0.351895                    0.618824                        -1.542423                        0.598175                     0.611757                          0.678772                   0.247059                    -0.806677                  -0.193649       0  
1                      1.017192                           -0.395342                       -0.642357                       -0.627209                        0.257271                       -1.461564                       0.325613                         1.628369                  0.640040                   0.750735                     1.164573                    0.900373                       0.063489                     0.948158                     0.273014                      -1.269147                                  -0.251101                  -2.271731                      -0.044167                       -0.443766                        -1.144794                       -0.645115                   -1.246090                         2.613357                       -0.479664                     1.581289                          0.931258                   0.151937                    -0.766595                   0.474351       0  
2                      1.997984                           -0.214285                       -0.389428                       -1.007633                        0.336435                       -0.851292                      -0.024184                         0.455908                  0.458753                  -0.267230                    -2.032402                    0.203082                       0.654107                    -3.512338                    -0.840937                       0.519407                                  -0.028053                  -1.621083                       0.142132                        1.514664                         0.828815                        0.516422                    0.130521                        -0.459210                        2.028205                    -0.093968                         -0.218274                  -0.163136                    -0.870289                   0.064038       1  
3                      0.077236                            0.852834                       -1.265608                       -3.219190                        0.251194                        0.215861                      -0.009520                         1.611203                  1.679806                  -0.008419                     0.658384                   -0.132437                      -1.466823                    -1.577080                    -0.800346                       1.960795                                  -4.042900                   1.722143                      -0.261888                       -1.145005                        -1.864582                       -1.168967                    1.385089                        -0.353028                        3.316150                    -0.524087                         -0.794327                   3.936365                     0.682989                  -2.521211       0  
4                      0.822283                            1.518209                        0.460143                        0.822488                        1.362718                        0.218560                      -1.038514                         1.000763                 -0.975878                  -0.551268                    -0.133044                   -0.393092                       1.236473                     1.657100                     0.833020                       0.665379                                  -0.900025                   0.291908                       0.482727                        0.552399                         0.970496                       -0.279168                    1.544356                         2.959727                        1.641201                    -0.130818                         -0.264292                  -0.748668                     0.964218                   0.087079       0  
                                 id  muggy-smalt-axolotl-pembus  dorky-peach-sheepdog-ordinal  slimy-seashell-cassowary-goose  snazzy-harlequin-chicken-distraction  frumpy-smalt-mau-ordinal  stealthy-beige-pinscher-golden  chummy-cream-tarantula-entropy  hazy-emerald-cuttlefish-unsorted  nerdy-indigo-wolfhound-sorted  leaky-amaranth-lizard-sorted  ugly-tangerine-chihuahua-important  shaggy-silver-indri-fimbus  flaky-chocolate-beetle-grandmaster  squirrely-harlequin-sheep-sumble  freaky-tan-angelfish-noise  lousy-plum-penguin-sumble  bluesy-rose-wallaby-discard  baggy-copper-oriole-dummy  stealthy-scarlet-hound-fepid  greasy-cinnamon-bonobo-contributor  cranky-cardinal-dogfish-ordinal  snippy-auburn-vole-learn  greasy-sepia-coral-dataset  flabby-tangerine-fowl-entropy  lousy-smalt-pinscher-dummy  bluesy-brass-chihuahua-distraction  goopy-eggplant-indri-entropy  homey-sepia-bombay-sorted  homely-ruby-bulldog-entropy  hasty-blue-sheep-contributor  blurry-wisteria-oyster-master  \
0  ba88c155ba898fc8b5099893036ef205                   -0.155789                      0.761549                        1.156785                             -0.272358                 -1.302155                        1.560988                       -1.815729                         -0.702968                       0.435537                      1.283895                           -0.343518                   -1.838579                           -0.042550                         -0.445104                   -1.095100                   0.705350                    -0.380414                  -0.795682                     -0.758300                           -0.414352                        -0.777386                 -1.161663                    0.066044                      -1.344336                    1.093101                            0.050480                     -0.237973                  -1.909876                     2.958334                      0.500903                      -0.279001   
1  7cbab5cea99169139e7e6d8ff74ebb77                   -4.528525                     -0.158527                        0.616473                             -0.172137                  1.255351                        0.064565                       -1.124906                         -1.826855                      -1.429915                     -0.777585                           -0.250756                   -0.416648                           -0.142929                         -0.977553                    1.384768                   2.393905                    -1.913877                   1.145628                     -1.145112                           -0.502978                         1.200528                 -6.464249                   -0.427974                       0.656148                   -1.808154                           -1.039081                     -0.604521                   2.109838                     5.174223                     -0.352850                       7.710951   
2  7baaf361537fbd8a1aaa2c97a6d4ccc7                    1.807488                     -0.673261                        0.526273                              0.175929                 -0.447282                       -0.506135                        0.080836                          0.371687                      -5.816214                      0.349798                           -0.614327                    0.561981                           -1.000958                         -0.637233                    1.537940                   0.004942                     0.051893                   2.797500                      0.449269                            0.989957                         0.497104                 -0.261759                    1.280068                       0.579863                    0.209045                            1.116066                     -0.857187                   0.204139                    -0.601325                      1.356764                       6.265113   
3  2e1350fe94ec9f2220bec5245e5e9265                    0.972763                      0.631843                        0.854640                             -0.040372                  1.544211                       -0.613590                        0.742637                         -0.742686                      -0.192597                      0.189707                           -0.227630                   -0.201365                           -1.040186                         -0.243242                   -0.152752                   1.712213                    -1.124487                  -2.959155                      2.926267                           -1.603171                         0.936707                  0.350965                    0.357936                      -2.476110                   -0.850119                            2.004634                      2.202431                  -0.307503                     1.350582                     -1.893245                      -0.998216   
4  626ce222351b68b259f73de172f11249                    0.092803                     -0.927249                        0.601406                             -0.136351                 -0.439235                        1.734636                       -2.403782                          0.157426                       1.147346                      2.230603                            0.461106                   -0.998996                            9.112968                          0.474929                   -0.652579                   0.464871                    -1.835954                   0.642856                     -1.564886                            0.782237                         0.380004                 -0.162841                   -0.395043                      -1.739407                    4.225656                            0.512716                      0.701067                   0.889569                    -1.051491                      0.110522                       1.548943   

   snoopy-auburn-dogfish-expert  stinky-maroon-blue-kernel  bumpy-amaranth-armadillo-important  slaphappy-peach-oyster-master  dorky-tomato-ragdoll-dataset  messy-mauve-wolverine-ordinal  geeky-pumpkin-moorhen-important  crabby-teal-otter-unsorted  flaky-goldenrod-bat-noise  beady-aquamarine-affenpinscher-grandmaster  pasty-auburn-rat-entropy  snappy-gamboge-caterpillar-dummy  breezy-persimmon-newt-noise  baggy-mustard-collie-hint  sunny-red-weasel-hint  cheeky-red-armadillo-unsorted  wiggy-magnolia-wolfhound-sorted  flimsy-chestnut-guppy-important  beady-champagne-bullfrog-grandmaster  lanky-emerald-alligator-kernel  blurry-flax-sloth-fepid  scanty-viridian-guppy-grandmaster  blurry-amber-moth-dataset  grumpy-zucchini-kudu-kernel  chewy-myrtle-wasp-important  snappy-lemon-okapi-ordinal  cranky-eggplant-oyster-sumble  snappy-pear-quoll-unsorted  crappy-cream-shrew-unsorted  bluesy-amber-walrus-fepid  clammy-xanthic-affenpinscher-golden  slimy-blue-alligator-master  \
0                     -0.119306                   1.211495                           -0.755415                       0.033202                     -1.496447                       1.361191                         0.934949                    1.664903                  -1.004478                                   -0.350402                  0.446974                          1.443067                     1.222758                  -0.845563              -2.626639                      -0.816679                         0.561367                        -0.215139                             -0.250864                       -1.719276                 0.265141                          -1.463373                  -1.721530                    -2.193917                     0.086357                   -1.511146                       0.617542                   -1.010811                    -0.172064                  -0.814117                            -0.057420                     0.261343   
1                      0.442175                  -0.752437                           -0.757275                       0.535649                      3.085409                       1.297368                        -2.859359                   -1.626998                   0.065392                                   -2.853327                  0.234377                         -0.049505                    -1.036182                   1.549844              -2.491107                       1.307844                        -1.648029                        -0.746368                              0.748839                       -1.231947                -0.104486                           0.266282                   0.466493                     1.334850                     1.034638                    1.141647                       4.815071                    0.377435                    -7.303383                  -0.980531                            -0.459949                     0.855530   
2                      1.042490                   3.850262                            0.336277                       1.849022                      0.464468                      -5.060801                        -0.229934                   -0.215942                   1.137923                                    0.232950                 -0.917048                          5.424248                     0.847493                  -0.167058               0.354579                      -0.645518                         6.897836                         0.484192                             -0.074722                        0.548996                 1.318833                          -0.601972                   8.283893                    -1.084495                    -0.145737                    0.099934                      -1.018545                   -0.721157                    -0.302809                  -6.352133                            -1.146357                    -0.428859   
3                      2.201053                   0.368326                            1.560715                       0.854505                      0.685387                       1.194494                         0.087977                    0.967949                  -0.679133                                    1.093144                  0.122715                          0.379456                    -1.002113                  -4.983367               0.602491                      -0.058396                         0.213827                        -0.228696                             -1.861349                       -1.183553                -1.332628                          -0.631679                  -1.441693                    -0.135255                     0.300952                    0.554800                      -0.126566                   -0.393944                    -0.515409                   0.617281                            -0.050906                    -0.918898   
4                     -0.697689                  -0.323163                            0.425898                      -0.217393                     -0.831831                      -0.591191                        -0.837859                   -1.269093                  -1.166061                                   -0.069396                  0.160365                         -0.591742                     0.334884                  -0.474218              -0.449592                      -2.253518                        -1.022524                         1.395466                              1.476675                       -1.882896                 0.302157                          -0.346917                  -0.720127                    -1.068360                     1.355791                    0.326113                       0.280976                    0.663616                    -1.158486                  -1.396207                            -0.584786                    -1.540467   

   hazy-tan-schnauzer-hint  breezy-aquamarine-sloth-sorted  tasty-indigo-termite-ordinal  thirsty-gamboge-dragonfly-kernel  gloppy-turquoise-quoll-goose  gamy-lilac-kakapo-expert  geeky-amethyst-quetzal-unsorted  hilly-lime-vole-novice  baggy-champagne-capuchin-discard  dorky-amaranth-eel-grandmaster  hasty-pink-iguana-noise  snoopy-red-zonkey-unsorted  tasty-periwinkle-fousek-unsorted  homey-scarlet-javanese-novice  woozy-crimson-beetle-contributor  snippy-burgundy-leopard-expert  slimy-purple-gorilla-goose  snappy-brass-malamute-entropy  greasy-rust-birman-kernel  goopy-copper-fousek-distraction  snazzy-cerise-donkey-distraction  squeaky-khaki-lionfish-distraction  snazzy-malachite-llama-unsorted  nerdy-violet-rat-pembus  clammy-scarlet-emu-important  lovely-sangria-koala-contributor  blurry-sangria-saola-gaussian  paltry-seashell-neanderthal-master  crappy-pumpkin-saola-grandmaster  smelly-tangerine-horse-gaussian  cranky-magenta-mammoth-distraction  hazy-champagne-duck-entropy  \
0                -1.916872                       -1.068507                     -0.005340                          2.180052                      0.026775                  1.399081                         0.824572               -2.038169                          0.888732                        0.608970                -0.360317                    0.044975                          0.979437                       0.685333                         -4.071870                       -1.391049                   -0.464203                      -0.871395                  -0.945037                         0.275193                          0.928588                           -1.115452                         0.712312                 0.200771                      0.166039                         -0.466333                       0.657163                            1.905603                          0.039740                         1.238462                            0.186323                     0.702743   
1                 0.112555                        0.727741                     -0.084384                         -0.628858                     -1.095759                 -2.861536                         0.715785               -0.134567                          1.120404                       -3.034951                 1.086518                   -0.146351                          0.239842                       0.030228                          1.308964                        0.113144                   -1.251986                       0.372197                  -0.222673                         2.538238                          0.570004                            0.134438                         0.142305                 0.896296                     -1.204458                         -0.185883                       0.327390                            0.027032                          0.604451                        -0.232483                            0.390391                     0.495049   
2                 2.801544                        1.802298                     -0.721999                         -7.531602                     -1.885478                 -0.403251                         1.026831                0.413141                         -3.170122                        0.349835                 1.337059                    0.391094                          1.565235                      -0.074793                          1.603599                       -0.811835                    1.808232                      -0.338747                  -1.949600                         3.164124                          0.389172                            0.615428                         1.045215                -0.258050                     -1.670897                          0.559988                       0.627414                           -2.078193                         -0.644595                         2.541453                            2.174968                    -0.732496   
3                -0.518098                        0.943853                      0.591729                          1.906886                     -0.401316                  0.940916                        -0.783539                0.026524                          1.023686                       -0.110838                 0.431602                   -0.006471                         -1.042789                       1.824422                          0.364531                       -1.016560                    1.221188                       0.697305                  -5.973826                        -0.261675                         -0.464729                           -0.180566                        -8.178396                -0.145395                      0.734117                         -0.979425                      -0.405724                           -0.975252                         -0.740455                         0.503495                           -0.782070                     0.587442   
4                 2.142028                       -0.140543                     -0.558471                         -7.959721                      1.875303                  0.754851                        -1.269904                1.127924                         -0.185697                        2.128125                -2.114702                    0.450251                         -0.485993                       2.071330                         -0.047263                       -0.914529                    0.476991                       0.992820                   0.895507                        -1.334375                         -1.171285                            0.421515                        -0.228773                -0.861488                     -0.170096                          0.459162                      -0.944509                           -5.286841                         -0.529903                        -0.317384                           -2.155830                    -0.419928   

   flaky-cream-peccary-sorted  pokey-russet-hippopotamus-master  leaky-apricot-mammoth-unsorted  flaky-brass-grasshopper-sorted  skanky-cobalt-dolphin-sorted  zippy-platinum-gharial-kernel  sleazy-cinnamon-frog-grandmaster  gloppy-denim-ostrich-gaussian  smelly-yellow-akbash-important  shaggy-sapphire-eel-unsorted  queasy-peach-bison-sumble  foggy-denim-hyrax-important  grumpy-bronze-capybara-sumble  ugly-green-earwig-noise  slimy-thistle-cuscus-hint  chummy-ruby-chinook-dataset  cranky-champagne-jackal-gaussian  lousy-wisteria-hornet-entropy  wheezy-harlequin-earwig-gaussian  tasty-buff-monkey-learn  droopy-razzmatazz-bordeaux-dummy  cozy-khaki-reindeer-golden  greasy-crimson-squid-grandmaster  dorky-turquoise-maltese-important  lousy-blue-buffalo-entropy  skinny-yellow-hedgehog-sumble  pasty-flax-octopus-dataset  pasty-sepia-eel-noise  seedy-charcoal-capybara-ordinal  cranky-ultramarine-swan-pembus  hasty-puce-fowl-fepid  sunny-purple-husky-noise  stuffy-periwinkle-zebu-discard  \
0                    1.399945                         -0.817419                        0.686545                        1.407467                      0.974132                       0.135300                          1.696705                      -0.788699                       -1.684722                      1.438113                   2.039114                    -0.459826                       0.207029                -1.428546                   0.711215                    -0.415440                         -1.283333                      -0.089447                          0.090984                -0.568837                          0.665882                   -0.575394                          1.105707                          -0.062809                   -0.475412                      -5.588619                    0.151471              -2.106680                         0.437766                        0.189234               6.792815                  1.176855                        0.483263   
1                    2.141954                          3.742934                        0.493312                        1.000792                      0.182685                      -1.601200                          0.476944                       0.200789                       -0.601150                     -1.892204                  -0.122907                    -0.918415                       1.579091                -1.765953                   0.241539                    -1.236576                          6.929615                      -0.094502                         -0.519368                -0.043361                         -0.177077                    0.379663                          0.979010                           0.093123                   -1.701645                       0.487401                    0.367319               2.516471                         0.552270                       -3.036578              -0.442154                 -2.660070                       -1.131321   
2                    0.441217                         -1.701109                        0.131789                       -0.425613                     -0.419477                       1.687296                          0.998134                      -8.386079                       -1.816398                     -0.677643                  -1.486055                     0.413588                      -0.078991                 1.578981                   0.234281                    -0.588197                         -1.091090                      -0.138850                          4.871218                 2.765279                         -4.382863                   -1.328942                          0.965998                          -1.760697                    1.217364                      -1.801385                   -5.148147               0.035876                         0.896874                       -1.825939              -0.224456                  0.397721                       -0.265016   
3                   -1.400635                          0.275011                        0.595170                        0.249948                     -0.464440                     -11.223181                          9.064758                       0.440654                        1.725887                      1.098256                   1.346254                    -5.707223                      -0.135870                 0.999077                   0.967193                    -0.207681                          4.673574                       0.077593                         -0.224089                 2.969478                          1.394751                    2.057733                         -0.143036                           3.276256                   -1.199834                      -0.004505                   -2.467340              -1.640418                         0.783671                        1.170002               0.408497                  0.475455                        0.468759   
4                   -0.568250                         -0.186206                       -0.407821                        0.804418                     -0.432888                       0.314669                         -0.592989                      -1.043017                        0.312452                      0.973452                   0.095479                     0.758799                      -1.004569                 0.417469                   2.598442                     0.440208                         -1.193414                       1.397924                          1.006578                -2.306552                          0.369987                   -0.014907                         10.093003                          -1.507911                    0.371095                      -0.568985                    0.109550               0.154243                        -1.102245                        4.062954               0.062099                  1.455404                        2.207068   

   nerdy-teal-olm-fepid  jumpy-blue-bison-sorted  wiggy-denim-retriever-distraction  messy-cardinal-lemur-distraction  scanty-periwinkle-dhole-dataset  snazzy-purple-donkey-discard  skanky-carmine-rabbit-contributor  wheezy-red-iguana-entropy  gloppy-mauve-bonobo-important  breezy-magenta-loon-hint  skinny-ultramarine-cat-fimbus  trippy-harlequin-maltese-expert  breezy-myrtle-loon-discard  woolly-gold-millipede-fimbus  beady-lilac-hornet-expert  bluesy-amethyst-octopus-gaussian  dorky-cream-flamingo-novice  lanky-puce-opossum-dummy  wheezy-copper-turtle-magic  gimpy-asparagus-eagle-novice  randy-ivory-eleuth-discard  beady-orange-binturong-golden  zippy-harlequin-otter-grandmaster  cozy-vermilion-uguisu-grandmaster  slimy-plum-cassowary-master  seedy-chartreuse-whippet-hint  messy-zucchini-tiger-contributor  stealthy-yellow-lobster-goose  snazzy-cream-macaque-novice  muggy-pumpkin-scorpion-grandmaster  lovely-plum-goat-novice  ugly-tangerine-llama-goose  silly-tan-tapir-pembus  \
0              0.455483                -0.426078                          -0.028362                         -0.677047                        -1.523369                     -0.437602                           1.036871                   0.217799                       0.167448                  1.377930                      -0.749641                         0.064033                   -0.552121                     -0.448148                   0.502808                          0.245318                     0.676763                  0.000679                         300                      1.965072                   -0.189546                      -1.253390                           0.134428                           1.154919                    -0.613069                       0.121526                          0.612531                       0.560506                    -2.025912                            1.893536                 0.861958                   -0.152119                2.106539   
1             -4.178315                -0.843153                          -1.421114                          0.429972                         0.125870                      1.467911                          -0.119699                  -0.047310                      -0.305424                  0.885748                       1.153578                        -0.302329                   -0.233455                     -0.433883                  -1.013979                         -0.406685                    -0.660465                 -1.066863                         358                     -1.177882                    0.728130                       1.514935                          -1.347996                          -0.598650                     0.434013                       0.070831                         -0.929432                       0.918951                     0.894804                            1.089733                 5.821359                   -0.133884               -1.660494   
2             -0.020581                 1.203537                           1.624502                          0.010737                         0.914910                      1.028583                          -0.312507                  -0.886463                      -1.459978                  0.303134                       1.661979                         0.524852                    0.669431                     -1.360100                  -0.208097                          0.031457                     0.664574                 -0.129102                         322                      0.247778                    0.470560                       0.589237                          -0.585447                          -0.701078                    -1.692267                      -4.062947                         -3.196613                      -0.684243                    -0.352084                           -1.283718                -0.696554                    1.979746                0.945142   
3              0.651572                 1.761120                           2.444130                          0.285188                        -2.272566                      1.080716                          -0.964946                  -1.403241                       1.047500                  1.669236                       5.253169                         0.559071                    0.058914                     -1.039960                   0.709514                          0.418464                     0.001671                 -1.531464                         351                      1.076871                    0.228018                       0.400242                          -1.864004                           0.645003                     2.822964                       0.529109                         -1.927428                      -0.022975                    -0.742579                           -0.799614                -1.498921                    1.164598               -2.354042   
4              0.721562                 0.795942                           0.790692                          0.443229                        -0.217013                     -3.059675                          -0.151207                  -0.817476                       1.401382                 -0.006250                       0.508188                        -0.019884                   -0.518066                     -1.773160                   1.138666                          0.035147                     0.757066                 -0.206638                         303                      7.782034                   -1.436343                       0.974840                          -1.017651                          -3.806537                     0.199321                      -3.364279                          1.869563                       1.260161                    -0.893312                           -0.225266                -1.578113                    0.432363               -0.416969   

   stuffy-aquamarine-audemer-fimbus  cheeky-plum-fox-noise  snoopy-heliotrope-squid-dataset  slimy-azure-molly-sumble  skanky-puce-discus-contributor  flimsy-magnolia-gopher-learn  paltry-sangria-lemur-fepid  leaky-grey-gerbil-sorted  craggy-maroon-civet-grandmaster  wiggy-cinnamon-gecko-important  skimpy-chocolate-dog-learn  nippy-jade-squirt-important  whiny-flax-sloth-learn  freaky-olive-insect-ordinal  boozy-amethyst-tarsier-dataset  dorky-rose-whale-novice  bumpy-amaranth-bonobo-gaussian  squirrely-apricot-goat-hint  lanky-coral-moorhen-expert  greasy-scarlet-paradise-goose  lousy-asparagus-tiger-discard  smelly-brown-deer-entropy  stealthy-chocolate-urchin-kernel  flabby-beige-serval-noise  skinny-indigo-tarantula-expert  zippy-cerise-weasel-contributor  nippy-pumpkin-rhinoceros-entropy  pretty-copper-insect-discard  grumpy-sapphire-akbash-fimbus  pasty-aquamarine-numbat-pembus  woolly-cinnabar-schnauzer-important  gloppy-buff-frigatebird-dataset  \
0                         -1.399490              -1.247870                        -1.188031                 -0.668959                       -2.344235                     -0.814284                    0.779065                  0.919750                        -0.336308                       -1.116131                   -0.951619                     0.981496               -0.165640                    -0.201464                        0.778968                 1.715949                        0.127345                     0.327552                   -0.102535                       0.125499                      -1.382313                  -0.484940                         -3.965579                   0.566889                        0.880366                         0.647721                         -3.228982                     -0.156404                       5.117561                       -0.026939                            -0.188065                         0.184727   
1                         -0.859584              -2.088402                         1.657726                  0.042080                        0.002217                     -0.164974                   -0.478248                  0.412277                        -1.181787                       -0.807069                   -0.793992                    -0.403412                2.619003                    -0.184254                       -0.131280                -0.144983                       -0.092923                    -0.899527                   -2.323539                       5.787257                      -0.975171                   0.622717                          0.837426                  -0.232265                        0.850543                         0.809191                          1.152841                      1.640085                      -0.389837                        0.628458                            -1.126042                        -0.978456   
2                         -0.957921              -0.174389                         0.224183                  1.250363                        3.863045                      0.092361                    0.141687                  0.562854                         0.607481                       -2.680293                    1.050192                     0.196201               -0.886225                     0.721884                       -0.901199                -0.342110                       -0.285493                    -0.769237                    0.361402                       0.565795                       0.512171                  -0.363209                         -0.339472                   0.350914                        0.182109                        -1.487154                         -0.256992                      0.382327                       0.207239                       -0.154853                            -0.668692                        -1.344769   
3                          0.959051              -0.110797                        -0.867450                 -0.770952                        1.988464                      0.829342                    0.084556                  0.287402                        -1.310967                        0.107499                   -0.817322                    -0.029367                3.149125                    -0.642003                        2.237427                -0.597968                        0.220276                     0.005293                    4.429893                      -1.020026                       0.152548                   0.329994                         -0.641310                   1.273158                        1.051270                         1.328713                         -2.672130                     -4.364616                      -5.283528                        3.804590                             2.787790                         1.075635   
4                         -0.688932               0.554923                         0.018446                  0.368767                       -2.155856                      0.006432                   -0.368476                 -0.117432                        -0.498183                       -0.286518                    0.298629                     0.366310               -1.157033                     0.191344                        0.050371                -0.332672                        0.512931                    -0.830661                    0.314989                       1.984564                      -0.130137                   0.189275                          1.550774                  -1.497691                        0.151530                         9.742921                          1.215634                     -0.766225                       0.204827                       -1.149462                            -0.265302                        -0.963562   

   wheezy-lavender-catfish-master  gamy-plum-tarsier-kernel  flaky-crimson-wallaby-distraction  cheeky-pear-horse-fimbus  trippy-asparagus-bison-expert  lanky-aqua-bullfrog-important  stinky-olive-kiwi-golden  sickly-denim-oriole-important  gloppy-persimmon-bee-unsorted  stealthy-azure-gopher-hint  hasty-ivory-dragonfly-goose  flimsy-turquoise-fox-kernel  lousy-zucchini-seahorse-dummy  shabby-magenta-whippet-novice  chewy-lime-peccary-fimbus  nippy-burgundy-beagle-novice  gloppy-firebrick-moth-dataset  sleazy-russet-iguana-unsorted  surly-corn-tzu-kernel  skinny-myrtle-whippet-fepid  homey-tangerine-sloth-discard  blurry-green-dodo-important  skinny-champagne-mayfly-sorted  dorky-purple-kiwi-hint  beady-mauve-frog-distraction  surly-brass-maltese-ordinal  beady-asparagus-opossum-expert  beady-rust-impala-dummy  droopy-amethyst-dachshund-hint  homey-crimson-budgerigar-grandmaster  droopy-cardinal-impala-important  woozy-apricot-moose-hint  paltry-sapphire-labradoodle-dummy  \
0                        0.575701                  2.019021                          -2.036119                 -1.165903                      -1.428271                       1.632553                  0.531274                      -0.408508                      -0.859111                   -3.218469                    -0.344290                    -0.003143                       1.177148                      -0.112949                  -0.528864                      1.243215                      -0.607317                       0.136174               4.574487                    -0.156850                      -0.119353                    -1.059150                        0.542886                1.105099                     -1.039678                    -0.020976                       -2.549582                -0.042384                       -0.080888                             -1.337010                         -0.454110                  0.147896                           1.429689   
1                        0.658354                  0.185621                          -0.274675                 -0.613881                       2.894057                      -2.701755                  0.422307                      -0.388107                       0.069174                    0.773190                     0.241139                    -0.248450                       0.485004                      -0.979782                  -0.514822                     -0.710992                      -1.606768                       0.907904              -5.185909                    -0.087884                      -0.255724                     0.184027                        1.428641                0.041613                     -6.718112                    -0.562997                        0.224132                -0.896035                        0.275753                             -0.932541                          0.279365                 -0.491741                           0.451097   
2                       -1.659271                  0.997545                           0.941704                  1.365917                       0.539689                      -1.708391                 -0.740253                       0.716254                       0.866790                    0.255286                     0.260478                     0.439873                       0.350665                      -0.318497                   2.096740                     -1.164711                       0.521713                      -0.233397               2.527137                    -0.270387                       1.915709                    -0.461741                       -0.417902               -0.482628                     -0.766603                     0.599319                       -0.074020                 1.279742                        0.401358                              0.785499                         -1.422332                 -1.158732                          -1.362747   
3                       -0.798294                  0.284380                           0.740646                  1.131223                       0.291245                      -7.865093                 -0.361334                       0.168589                       1.677455                   -1.202186                    -0.782700                     0.171238                       0.593352                       0.432077                   0.187792                      0.428868                       0.668646                       4.167636              -0.286516                     0.555504                      -0.616826                     1.435175                       -2.095818               -0.562643                      2.114914                    -0.769483                        0.505546                 1.096947                        2.625851                              0.916570                          1.993835                 -0.279642                          -1.540600   
4                       -0.476231                 -0.214011                          -0.247436                  1.398286                      -0.986582                      -4.536937                 -0.365340                       0.375950                       0.648593                   -0.190055                    -0.553254                    -0.059757                       3.993585                       5.161428                  -2.412226                     -2.320440                      -1.336910                      -0.858655               0.722386                     0.872150                      -0.485992                    -1.197185                       -0.954007               -0.887940                     -0.331320                     0.436744                        0.841602                 0.550060                        0.831870                              1.541058                          0.173281                 -1.045860                          -0.253597   

   crappy-carmine-eagle-entropy  greasy-magnolia-spider-grandmaster  crabby-carmine-flounder-sorted  skimpy-copper-fowl-grandmaster  hasty-seashell-woodpecker-hint  snappy-purple-bobcat-important  thirsty-carmine-corgi-ordinal  homely-auburn-reindeer-unsorted  crappy-beige-tiger-fepid  cranky-auburn-swan-novice  chewy-bistre-buzzard-expert  skinny-cyan-macaque-pembus  slimy-periwinkle-otter-expert  snazzy-burgundy-clam-novice  cozy-ochre-gorilla-gaussian  homey-sangria-wolfhound-dummy  snazzy-asparagus-hippopotamus-contributor  paltry-red-hamster-sorted  zippy-dandelion-insect-golden  baggy-coral-bandicoot-unsorted  goopy-lavender-wolverine-fimbus  wheezy-myrtle-mandrill-entropy  wiggy-lilac-lemming-sorted  gloppy-cerise-snail-contributor  woozy-silver-havanese-gaussian  jumpy-thistle-discus-sorted  muggy-turquoise-donkey-important  blurry-buff-hyena-entropy  bluesy-chocolate-kudu-fepid  gamy-white-monster-expert  
0                      1.568941                           -0.708524                       -1.353830                       -1.022430                        0.223778                        0.584740                      -1.115830                         1.620426                 -0.806678                   0.649135                    -0.052494                   -0.947633                       2.981762                    -2.321268                     0.106400                      -0.350618                                  -0.121869                  -0.898826                      -0.751598                       -0.732516                        -4.207352                        0.404394                    0.695667                         0.515584                        1.339533                     2.005131                         -1.832629                  -0.454067                    -0.204909                  -0.314752  
1                     -0.269904                           -0.825188                       -0.505424                       -0.955194                       -0.394282                        0.853037                       0.521197                         2.146393                 -0.520788                  -1.047142                    -2.104112                   -0.647331                       3.002434                     0.249064                     0.923207                       1.169519                                  -0.914550                  -0.152553                       1.291979                        0.344865                        -0.219057                       -1.473936                   -1.230680                         2.064435                       -0.297421                    -0.499721                          0.138128                  -1.674848                    -2.368582                   0.185971  
2                      0.688097                            0.196343                        0.612186                       -0.243159                        0.327198                       -1.599051                       0.330804                         0.127960                 -0.159728                  -0.818688                     1.895874                   -0.570596                      -0.487092                    -0.527024                     0.513077                      -1.526673                                   0.583525                  -1.374524                       0.366187                       -0.089413                        -4.333965                        1.213142                    0.639393                         0.595109                       -1.492298                     0.892696                          2.198806                   0.132664                    -0.355048                   0.055225  
3                     -0.111547                           -1.861226                        1.294002                       -0.174394                        5.838861                        0.560257                       0.299459                         0.344049                 -1.208344                   2.055624                     0.630718                    0.701779                       0.043112                     0.954972                     1.734465                      -0.129661                                   0.316306                   0.509619                       0.776818                        0.622992                        -0.272967                        0.501091                    0.059636                        -0.815263                        1.898444                    -1.613323                          1.755354                   0.066935                     0.523591                  -0.790499  
4                     -0.616238                            0.324182                        2.116405                       -0.695832                        0.535979                        0.728622                      -0.147117                         0.483530                 -1.456178                   0.614680                    -0.560578                   -0.353024                      -8.653191                     3.085904                     0.983407                      -1.912649                                   0.634780                   3.160023                       1.109577                        0.236485                        -0.211730                        0.045831                   -0.346738                         0.558668                       -1.985189                    -1.011715                          1.555390                   0.514802                    -0.886653                   0.655927  

根据结果,我们可以看出训练数据集有262144个样本,258个特征;测试数据集有131072,257个特征,比训练数据集少了target标签。抛开id外,其他都是数值型特征,现在基本都是没有任何头绪的数字。现在我们来看一下训练数据集的一些信息。

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    print(train.describe())

运行结果

       muggy-smalt-axolotl-pembus  dorky-peach-sheepdog-ordinal  slimy-seashell-cassowary-goose  snazzy-harlequin-chicken-distraction  frumpy-smalt-mau-ordinal  stealthy-beige-pinscher-golden  chummy-cream-tarantula-entropy  hazy-emerald-cuttlefish-unsorted  nerdy-indigo-wolfhound-sorted  leaky-amaranth-lizard-sorted  ugly-tangerine-chihuahua-important  shaggy-silver-indri-fimbus  flaky-chocolate-beetle-grandmaster  squirrely-harlequin-sheep-sumble  freaky-tan-angelfish-noise  lousy-plum-penguin-sumble  bluesy-rose-wallaby-discard  baggy-copper-oriole-dummy  stealthy-scarlet-hound-fepid  greasy-cinnamon-bonobo-contributor  cranky-cardinal-dogfish-ordinal  snippy-auburn-vole-learn  greasy-sepia-coral-dataset  flabby-tangerine-fowl-entropy  lousy-smalt-pinscher-dummy  bluesy-brass-chihuahua-distraction  goopy-eggplant-indri-entropy  homey-sepia-bombay-sorted  homely-ruby-bulldog-entropy  hasty-blue-sheep-contributor  blurry-wisteria-oyster-master  snoopy-auburn-dogfish-expert  \
count               262144.000000                 262144.000000                   262144.000000                         262144.000000             262144.000000                   262144.000000                   262144.000000                     262144.000000                  262144.000000                 262144.000000                       262144.000000               262144.000000                       262144.000000                     262144.000000               262144.000000              262144.000000                262144.000000              262144.000000                 262144.000000                       262144.000000                    262144.000000             262144.000000               262144.000000                  262144.000000               262144.000000                       262144.000000                 262144.000000              262144.000000                262144.000000                 262144.000000                  262144.000000                 262144.000000   
mean                     0.005924                      0.000936                       -0.012530                             -0.005688                  0.001607                        0.007878                       -0.003500                         -0.005927                       0.002664                      0.020485                           -0.001629                    0.008115                           -0.001445                          0.006434                    0.013150                  -0.016462                     0.014498                   0.000990                     -0.004702                           -0.010490                         0.006592                 -0.007705                    0.010857                      -0.011858                   -0.005172                           -0.012855                     -0.003606                   0.001209                     0.007980                     -0.005911                      -0.000397                     -0.000490   
std                      1.706660                      1.720943                        1.698693                              1.874875                  1.726869                        1.734646                        1.720431                          1.693276                       1.872248                      1.645070                            1.682552                    1.608536                            1.720585                          1.705780                    1.682066                   1.781459                     1.702845                   1.651425                      1.799791                            1.723219                         1.727600                  1.678423                    1.807137                       1.805204                    1.778072                            1.658649                      1.795048                   1.827458                     1.725991                      1.771547                       1.786675                      1.688791   
min                    -15.588429                    -15.644144                      -15.235982                            -15.672966                -16.800626                      -14.789422                      -15.591329                        -15.696478                     -17.011807                    -14.693510                          -19.733308                  -17.343910                          -15.661142                        -15.449736                  -17.327255                 -15.724992                   -20.959471                 -16.657590                    -18.662974                          -16.838221                       -16.533784                -15.632537                  -18.807971                     -17.454867                  -17.650032                          -16.063910                    -16.203291                 -17.616064                   -17.615630                    -18.155357                     -17.581792                    -15.349092   
25%                     -0.765404                     -0.770224                       -0.777421                             -0.802502                 -0.770838                       -0.771608                       -0.770634                         -0.764398                      -0.795475                     -0.756594                           -0.761005                   -0.741232                           -0.767934                         -0.759389                   -0.756116                  -0.782001                    -0.758484                  -0.755598                     -0.786833                           -0.775193                        -0.768002                 -0.765029                   -0.779992                      -0.791112                   -0.783849                           -0.763995                     -0.783554                  -0.793338                    -0.765906                     -0.784965                      -0.777341                     -0.761246   
50%                      0.002148                      0.003543                       -0.005771                             -0.003505                  0.000866                        0.002830                        0.001257                         -0.003657                       0.004936                      0.004372                            0.000157                    0.003860                           -0.001344                          0.003531                    0.006706                  -0.003552                     0.004006                  -0.000431                     -0.001292                           -0.005718                        -0.002144                 -0.004066                    0.005575                      -0.005285                   -0.001344                           -0.003270                     -0.002283                   0.001721                     0.004760                     -0.001934                       0.001828                     -0.001682   
75%                      0.769228                      0.773400                        0.764092                              0.798460                  0.769954                        0.776606                        0.769794                          0.752836                       0.800376                      0.764807                            0.759293                    0.750801                            0.763828                          0.770540                    0.768772                   0.772042                     0.772029                   0.759202                      0.782631                            0.757846                         0.772787                  0.759634                    0.792009                       0.780260                    0.777918                            0.750965                      0.781823                   0.790271                     0.779128                      0.775912                       0.781760                      0.761690   
max                     15.797000                     18.577178                       17.205310                             16.585173                 16.815798                       17.378922                       15.202100                         16.645394                      19.396192                     17.131375                           15.558533                   15.732609                           16.599516                         16.097210                   15.756782                  16.422857                    16.069614                  17.051746                     16.286381                           16.609642                        15.522247                 15.902420                   17.171457                      17.235412                   15.839078                           16.228652                     15.947737                  17.017614                    16.265235                     15.080431                      16.664606                     15.846838   

       stinky-maroon-blue-kernel  bumpy-amaranth-armadillo-important  slaphappy-peach-oyster-master  dorky-tomato-ragdoll-dataset  messy-mauve-wolverine-ordinal  geeky-pumpkin-moorhen-important  crabby-teal-otter-unsorted  flaky-goldenrod-bat-noise  beady-aquamarine-affenpinscher-grandmaster  pasty-auburn-rat-entropy  snappy-gamboge-caterpillar-dummy  breezy-persimmon-newt-noise  baggy-mustard-collie-hint  sunny-red-weasel-hint  cheeky-red-armadillo-unsorted  wiggy-magnolia-wolfhound-sorted  flimsy-chestnut-guppy-important  beady-champagne-bullfrog-grandmaster  lanky-emerald-alligator-kernel  blurry-flax-sloth-fepid  scanty-viridian-guppy-grandmaster  blurry-amber-moth-dataset  grumpy-zucchini-kudu-kernel  chewy-myrtle-wasp-important  snappy-lemon-okapi-ordinal  cranky-eggplant-oyster-sumble  snappy-pear-quoll-unsorted  crappy-cream-shrew-unsorted  bluesy-amber-walrus-fepid  clammy-xanthic-affenpinscher-golden  slimy-blue-alligator-master  hazy-tan-schnauzer-hint  \
count              262144.000000                       262144.000000                  262144.000000                 262144.000000                  262144.000000                    262144.000000               262144.000000              262144.000000                               262144.000000             262144.000000                     262144.000000                262144.000000              262144.000000          262144.000000                  262144.000000                    262144.000000                    262144.000000                         262144.000000                   262144.000000            262144.000000                      262144.000000              262144.000000                262144.000000                262144.000000               262144.000000                  262144.000000               262144.000000                262144.000000              262144.000000                        262144.000000                262144.000000            262144.000000   
mean                   -0.013010                           -0.000040                       0.003882                     -0.008507                      -0.009352                         0.007037                    0.004091                  -0.011576                                    0.010042                 -0.019432                         -0.002077                    -0.000380                  -0.003879              -0.006045                      -0.008053                        -0.004487                         0.003617                              0.014540                       -0.003899                 0.002246                          -0.011139                  -0.008196                     0.007701                     0.002179                   -0.003002                      -0.006158                    0.005187                    -0.007786                  -0.003469                            -0.016449                     0.008785                -0.005483   
std                     1.770345                            1.820864                       1.757163                      1.732845                       1.885151                         1.813789                    1.688640                   1.811376                                    1.820051                  1.794813                          1.667351                     1.735746                   1.795944               1.812823                       1.672143                         1.766980                         1.820393                              1.782725                        1.820951                 1.731683                           1.775224                   1.763996                     1.772829                     1.652159                    1.775761                       1.776042                    1.717216                     1.772831                   1.765460                             1.706507                     1.823516                 1.915849   
min                   -15.377036                          -16.233520                     -16.210152                    -16.110597                     -16.508542                       -15.571176                  -14.857979                 -17.515148                                  -19.492445                -17.132259                        -16.736741                   -16.229384                 -18.700593             -19.589393                     -18.277355                       -15.957169                       -16.191485                            -16.144175                      -17.543946               -17.303756                         -18.310042                 -18.206191                   -18.380842                   -15.648989                  -15.565114                     -16.334336                  -16.055179                   -16.427935                 -17.520228                           -16.545548                   -15.429499               -16.436130   
25%                    -0.781898                           -0.787004                      -0.773300                     -0.775081                      -0.801363                        -0.783456                   -0.760404                  -0.789706                                   -0.785559                 -0.783559                         -0.757331                    -0.775058                  -0.780819              -0.787176                      -0.764201                        -0.778183                        -0.787364                             -0.777664                       -0.786385                -0.766719                          -0.781681                  -0.782382                    -0.774181                    -0.756000                   -0.787135                      -0.781652                   -0.763662                    -0.784103                  -0.779731                            -0.774242                    -0.791151                -0.816203   
50%                    -0.003771                            0.000990                      -0.000225                     -0.003409                      -0.004631                         0.006661                    0.001620                  -0.003919                                    0.000256                 -0.003223                          0.004351                    -0.000260                  -0.002669              -0.005894                      -0.002765                         0.001034                         0.000942                             -0.000418                        0.002244                 0.001157                          -0.000646                  -0.007165                     0.001959                     0.003013                   -0.004855                      -0.001084                    0.005226                    -0.005252                   0.000231                            -0.010396                    -0.000075                -0.003051   
75%                     0.773938                            0.783732                       0.780273                      0.764276                       0.798681                         0.793304                    0.763912                   0.778159                                    0.789448                  0.775107                          0.756138                     0.770387                   0.779141               0.778585                       0.756821                         0.779744                         0.790260                              0.790696                        0.788238                 0.770687                           0.777259                   0.768427                     0.778390                     0.760335                    0.774235                       0.777605                    0.772277                     0.773976                   0.774538                             0.761671                     0.791756                 0.808918   
max                    18.455962                           16.199981                      17.143851                     17.204338                      18.192529                        18.468209                   15.085824                  16.678473                                   18.680014                 16.758500                         16.058233                    16.342413                  18.588235              17.238856                      15.083567                        17.135859                        16.104960                             16.474912                       20.316103                17.149206                          15.674926                  16.216123                    16.832489                    15.716950                   16.544156                      14.544047                   15.920528                    16.364074                  15.251945                            16.520817                    17.950904                16.177474   

       breezy-aquamarine-sloth-sorted  tasty-indigo-termite-ordinal  thirsty-gamboge-dragonfly-kernel  gloppy-turquoise-quoll-goose  gamy-lilac-kakapo-expert  geeky-amethyst-quetzal-unsorted  hilly-lime-vole-novice  baggy-champagne-capuchin-discard  dorky-amaranth-eel-grandmaster  hasty-pink-iguana-noise  snoopy-red-zonkey-unsorted  tasty-periwinkle-fousek-unsorted  homey-scarlet-javanese-novice  woozy-crimson-beetle-contributor  snippy-burgundy-leopard-expert  slimy-purple-gorilla-goose  snappy-brass-malamute-entropy  greasy-rust-birman-kernel  goopy-copper-fousek-distraction  snazzy-cerise-donkey-distraction  squeaky-khaki-lionfish-distraction  snazzy-malachite-llama-unsorted  nerdy-violet-rat-pembus  clammy-scarlet-emu-important  lovely-sangria-koala-contributor  blurry-sangria-saola-gaussian  paltry-seashell-neanderthal-master  crappy-pumpkin-saola-grandmaster  smelly-tangerine-horse-gaussian  cranky-magenta-mammoth-distraction  hazy-champagne-duck-entropy  \
count                   262144.000000                 262144.000000                     262144.000000                 262144.000000             262144.000000                    262144.000000           262144.000000                     262144.000000                   262144.000000            262144.000000               262144.000000                     262144.000000                  262144.000000                     262144.000000                   262144.000000               262144.000000                  262144.000000              262144.000000                    262144.000000                     262144.000000                       262144.000000                    262144.000000            262144.000000                 262144.000000                     262144.000000                  262144.000000                       262144.000000                     262144.000000                    262144.000000                       262144.000000                262144.000000   
mean                        -0.011750                     -0.007006                          0.009983                     -0.002080                  0.005350                        -0.004196                0.001701                          0.018081                        0.003217                -0.005284                    0.012291                         -0.003441                       0.005601                          0.001847                       -0.001137                   -0.002755                       0.003488                  -0.000659                         0.010956                         -0.015972                            0.001261                        -0.004118                -0.002428                      0.003133                         -0.004585                       0.003477                           -0.011108                          0.002799                         0.002309                            0.003642                    -0.003516   
std                          1.771193                      1.807504                          1.817684                      1.762516                  1.776054                         1.737076                1.721107                          1.692792                        1.779620                 1.893640                    1.708289                          1.775329                       1.760692                          1.735921                        1.773804                    1.817475                       1.656839                   1.702659                         1.726721                          1.825077                            1.878171                         1.772292                 1.784651                      1.805634                          1.732357                       1.697995                            1.769267                          1.736379                         1.712191                            1.727281                     1.785683   
min                        -16.952138                    -17.234269                        -15.288667                    -16.288999                -15.361656                       -18.934289              -15.470356                        -16.971211                      -16.869219               -16.042443                  -16.547183                        -16.343521                     -15.242136                        -17.162135                      -15.077293                  -17.789807                     -16.533606                 -15.046972                       -17.317512                        -15.762488                          -16.275884                       -17.315237               -16.390571                    -19.572870                        -16.622449                     -14.931448                          -16.943434                        -17.595788                       -18.211429                          -17.125769                   -16.844223   
25%                         -0.786530                     -0.784312                         -0.787739                     -0.779075                 -0.772978                        -0.773339               -0.766132                         -0.758101                       -0.777716                -0.805151                   -0.763585                         -0.775952                      -0.772934                         -0.770412                       -0.778905                   -0.788167                      -0.753839                  -0.766823                        -0.766827                         -0.794725                           -0.799043                        -0.782160                -0.781579                     -0.791601                         -0.772450                      -0.759321                           -0.783897                         -0.776454                        -0.765023                           -0.772640                    -0.784948   
50%                         -0.003917                     -0.002516                          0.007679                     -0.000361                  0.001530                        -0.000036               -0.000494                          0.006256                        0.000888                -0.005123                    0.003709                          0.003800                       0.002444                         -0.002249                        0.003387                   -0.003522                       0.003082                  -0.000883                         0.002110                         -0.007007                            0.003859                        -0.002552                 0.002589                     -0.002194                          0.002935                       0.005173                           -0.002960                          0.001338                         0.002128                            0.000267                    -0.002854   
75%                          0.772208                      0.783299                          0.794743                      0.776715                  0.778721                         0.770025                0.774435                          0.774527                        0.781360                 0.800175                    0.772951                          0.776381                       0.779108                          0.771093                        0.779946                    0.783323                       0.759127                   0.765134                         0.776688                          0.783469                            0.803617                         0.776778                 0.781254                      0.783979                          0.774583                       0.765978                            0.773896                          0.772317                         0.765867                            0.773341                     0.779471   
max                         15.716128                     17.826050                         15.749498                     15.394013                 15.150854                        16.081277               15.574046                         16.940857                       16.089656                17.687367                   16.927152                         16.448362                      16.876339                         14.772770                       17.539646                   15.879535                      15.268761                  18.323852                        17.155691                         16.530824                           15.019513                        15.575681                16.083716                     15.893556                         17.521576                      15.570914                           15.535154                         16.535516                        16.521612                           16.899886                    16.645958   

       flaky-cream-peccary-sorted  pokey-russet-hippopotamus-master  leaky-apricot-mammoth-unsorted  flaky-brass-grasshopper-sorted  skanky-cobalt-dolphin-sorted  zippy-platinum-gharial-kernel  sleazy-cinnamon-frog-grandmaster  gloppy-denim-ostrich-gaussian  smelly-yellow-akbash-important  shaggy-sapphire-eel-unsorted  queasy-peach-bison-sumble  foggy-denim-hyrax-important  grumpy-bronze-capybara-sumble  ugly-green-earwig-noise  slimy-thistle-cuscus-hint  chummy-ruby-chinook-dataset  cranky-champagne-jackal-gaussian  lousy-wisteria-hornet-entropy  wheezy-harlequin-earwig-gaussian  tasty-buff-monkey-learn  droopy-razzmatazz-bordeaux-dummy  cozy-khaki-reindeer-golden  greasy-crimson-squid-grandmaster  dorky-turquoise-maltese-important  lousy-blue-buffalo-entropy  skinny-yellow-hedgehog-sumble  pasty-flax-octopus-dataset  pasty-sepia-eel-noise  seedy-charcoal-capybara-ordinal  cranky-ultramarine-swan-pembus  hasty-puce-fowl-fepid  sunny-purple-husky-noise  \
count               262144.000000                     262144.000000                   262144.000000                   262144.000000                 262144.000000                  262144.000000                     262144.000000                  262144.000000                   262144.000000                 262144.000000              262144.000000                262144.000000                  262144.000000            262144.000000              262144.000000                262144.000000                     262144.000000                  262144.000000                     262144.000000            262144.000000                     262144.000000               262144.000000                     262144.000000                      262144.000000               262144.000000                  262144.000000               262144.000000          262144.000000                    262144.000000                   262144.000000          262144.000000             262144.000000   
mean                    -0.001236                          0.005515                        0.003225                        0.005517                     -0.007553                       0.007047                          0.011373                       0.001851                        0.004213                      0.000476                   0.005031                    -0.012810                       0.005971                 0.002987                  -0.002279                    -0.008060                          0.016123                      -0.006153                          0.010318                -0.003963                          0.006185                   -0.011122                          0.007161                          -0.008514                    0.007592                      -0.004549                    0.000503               0.009742                         0.012472                        0.005016               0.011979                 -0.007270   
std                      1.840040                          1.750628                        1.750722                        1.797335                      1.724316                       1.720139                          1.754704                       1.749147                        1.654715                      1.742130                   1.863788                     1.778808                       1.708601                 1.782955                   1.807470                     1.640760                          1.852922                       1.684508                          1.600180                 1.695200                          1.676090                    1.752088                          1.759594                           1.678436                    1.732161                       1.745027                    1.775936               1.833531                         1.649036                        1.819294               1.772587                  1.760338   
min                    -15.414730                        -17.099873                      -15.875680                      -16.257839                    -16.264499                     -16.903429                        -17.250040                     -18.512265                      -15.631673                    -17.275546                 -18.112998                   -19.177631                     -17.435334               -16.238342                 -16.315958                   -15.871179                        -18.762957                     -14.669513                        -13.768432               -16.316186                        -15.212014                  -16.274041                        -16.890091                         -17.075535                  -17.417920                     -18.091107                  -14.739497             -16.161252                       -16.347333                      -15.546590             -15.178832                -15.621534   
25%                     -0.794290                         -0.767843                       -0.773437                       -0.783796                     -0.769436                      -0.766695                         -0.770980                      -0.775013                       -0.754314                     -0.772280                  -0.795570                    -0.782295                      -0.759577                -0.779118                  -0.783835                    -0.756447                         -0.793406                      -0.762942                         -0.747196                -0.760552                         -0.755841                   -0.779854                         -0.773952                          -0.763056                   -0.766207                      -0.776964                   -0.784474              -0.789348                        -0.750408                       -0.783020              -0.770817                 -0.777066   
50%                     -0.001362                          0.001945                        0.003273                        0.000492                     -0.004686                       0.003132                          0.003069                       0.001133                       -0.003781                     -0.002351                   0.004343                    -0.005112                       0.005309                -0.002412                   0.000562                    -0.006885                          0.004219                      -0.000440                         -0.002221                -0.001556                          0.004216                   -0.002992                          0.001584                          -0.002720                    0.007034                       0.001530                    0.000876               0.001364                         0.004733                        0.003213               0.003132                 -0.003653   
75%                      0.795398                          0.776837                        0.772739                        0.788575                      0.761651                       0.773644                          0.781069                       0.776834                        0.757184                      0.768021                   0.801582                     0.774750                       0.768379                 0.785473                   0.779831                     0.751972                          0.802307                       0.761795                          0.750622                 0.759366                          0.761026                    0.764977                          0.782046                           0.751724                    0.773946                       0.773025                    0.782984               0.794876                         0.765031                        0.788342               0.789645                  0.775884   
max                     16.755615                         15.936027                       15.158627                       14.584300                     14.901601                      17.779941                         16.718256                      15.332533                       14.961133                     17.355220                  15.711715                    17.181224                      17.018785                17.420423                  15.701671                    15.223815                         16.774384                      16.697283                         15.893562                15.114146                         19.059926                   15.183419                         16.196325                          19.645549                   15.721005                      15.157504                   17.059722              15.955080                        16.049119                       16.634802              15.337103                 14.944941   

       stuffy-periwinkle-zebu-discard  nerdy-teal-olm-fepid  jumpy-blue-bison-sorted  wiggy-denim-retriever-distraction  messy-cardinal-lemur-distraction  scanty-periwinkle-dhole-dataset  snazzy-purple-donkey-discard  skanky-carmine-rabbit-contributor  wheezy-red-iguana-entropy  gloppy-mauve-bonobo-important  breezy-magenta-loon-hint  skinny-ultramarine-cat-fimbus  trippy-harlequin-maltese-expert  breezy-myrtle-loon-discard  woolly-gold-millipede-fimbus  beady-lilac-hornet-expert  bluesy-amethyst-octopus-gaussian  dorky-cream-flamingo-novice  lanky-puce-opossum-dummy  wheezy-copper-turtle-magic  gimpy-asparagus-eagle-novice  randy-ivory-eleuth-discard  beady-orange-binturong-golden  zippy-harlequin-otter-grandmaster  cozy-vermilion-uguisu-grandmaster  slimy-plum-cassowary-master  seedy-chartreuse-whippet-hint  messy-zucchini-tiger-contributor  stealthy-yellow-lobster-goose  snazzy-cream-macaque-novice  muggy-pumpkin-scorpion-grandmaster  lovely-plum-goat-novice  \
count                   262144.000000         262144.000000            262144.000000                      262144.000000                     262144.000000                    262144.000000                 262144.000000                      262144.000000              262144.000000                  262144.000000             262144.000000                  262144.000000                    262144.000000               262144.000000                 262144.000000              262144.000000                     262144.000000                262144.000000             262144.000000               262144.000000                 262144.000000               262144.000000                  262144.000000                      262144.000000                      262144.000000                262144.000000                  262144.000000                     262144.000000                  262144.000000                262144.000000                       262144.000000            262144.000000   
mean                        -0.006173             -0.005757                -0.010032                           0.009216                          0.009916                         0.006157                     -0.006533                           0.001150                  -0.008401                       0.012302                 -0.007024                      -0.002830                        -0.013995                   -0.014232                      0.001187                   0.000146                         -0.013708                    -0.005414                  0.006438                  255.602486                     -0.004110                   -0.004362                      -0.000777                          -0.003715                          -0.011102                     0.010047                       0.006137                         -0.001065                      -0.000740                    -0.014290                           -0.000106                 0.003620   
std                          1.733773              1.671412                 1.769483                           1.879872                          1.735810                         1.611612                      1.815816                           1.692444                   1.757266                       1.692395                  1.713687                       1.972703                         1.837166                    1.852221                      1.787421                   1.773277                          1.685311                     1.731256                  1.767181                  147.920785                      1.822555                    1.681160                       1.732947                           1.690996                           1.747573                     1.814733                       1.737796                          1.741998                       1.711294                     1.709185                            1.738672                 1.675560   
min                        -15.863080            -16.979865               -15.977810                         -15.340630                        -15.825774                       -15.882380                    -14.574623                         -17.071251                 -17.080807                     -16.084418                -17.918030                     -16.291598                       -18.031983                  -16.724303                    -18.076120                 -15.118838                        -16.337920                   -16.055838                -16.137772                    0.000000                    -17.908997                  -18.401960                     -15.802386                         -15.576517                         -15.383620                   -17.654328                     -16.273133                        -16.013548                     -15.840682                   -15.771187                          -16.527411               -17.108495   
25%                         -0.771466             -0.764593                -0.787268                          -0.792827                         -0.766004                        -0.747096                     -0.794300                          -0.760769                  -0.779942                      -0.754760                 -0.769787                      -0.824660                        -0.796619                   -0.802802                     -0.777152                  -0.779034                         -0.771097                    -0.773036                 -0.773236                  127.000000                     -0.788992                   -0.762686                      -0.769000                          -0.764898                          -0.777380                    -0.779042                      -0.767406                         -0.772594                      -0.766753                    -0.775354                           -0.768979                -0.756768   
50%                         -0.000495             -0.002606                -0.002084                           0.005874                          0.006407                         0.005135                     -0.002817                           0.001138                  -0.001111                       0.008028                 -0.003864                      -0.003691                        -0.010031                   -0.006489                      0.002138                   0.003873                         -0.005137                    -0.004331                  0.002851                  256.000000                     -0.003613                   -0.002185                       0.001452                          -0.004821                          -0.004056                     0.004013                       0.004058                         -0.001187                       0.002728                    -0.004176                           -0.001394                 0.000891   
75%                          0.765896              0.757733                 0.780470                           0.801241                          0.770929                         0.755444                      0.785895                           0.765505                   0.772606                       0.769533                  0.763813                       0.815264                         0.781283                    0.787256                      0.784825                   0.782332                          0.756779                     0.766133                  0.780878                  384.000000                      0.786347                    0.760650                       0.767883                           0.759708                           0.765514                     0.792088                       0.770528                          0.772588                       0.767794                     0.761369                            0.771401                 0.760691   
max                         18.211265             16.750299                18.245909                          16.324859                         15.448896                        15.665289                     15.221348                          17.569611                  15.484624                      21.075829                 18.958303                      16.297262                        16.881324                   16.781254                     14.609375                  16.235736                         15.852611                    15.848526                 15.494765                  511.000000                     17.330385                   16.975057                      15.159126                          20.376484                          16.283263                    16.082011                      16.554476                         16.141431                      17.980960                    16.468661                           17.413137                17.428139   

       ugly-tangerine-llama-goose  silly-tan-tapir-pembus  stuffy-aquamarine-audemer-fimbus  cheeky-plum-fox-noise  snoopy-heliotrope-squid-dataset  slimy-azure-molly-sumble  skanky-puce-discus-contributor  flimsy-magnolia-gopher-learn  paltry-sangria-lemur-fepid  leaky-grey-gerbil-sorted  craggy-maroon-civet-grandmaster  wiggy-cinnamon-gecko-important  skimpy-chocolate-dog-learn  nippy-jade-squirt-important  whiny-flax-sloth-learn  freaky-olive-insect-ordinal  boozy-amethyst-tarsier-dataset  dorky-rose-whale-novice  bumpy-amaranth-bonobo-gaussian  squirrely-apricot-goat-hint  lanky-coral-moorhen-expert  greasy-scarlet-paradise-goose  lousy-asparagus-tiger-discard  smelly-brown-deer-entropy  stealthy-chocolate-urchin-kernel  flabby-beige-serval-noise  skinny-indigo-tarantula-expert  zippy-cerise-weasel-contributor  nippy-pumpkin-rhinoceros-entropy  pretty-copper-insect-discard  grumpy-sapphire-akbash-fimbus  pasty-aquamarine-numbat-pembus  woolly-cinnabar-schnauzer-important  \
count               262144.000000           262144.000000                     262144.000000          262144.000000                    262144.000000             262144.000000                   262144.000000                 262144.000000               262144.000000             262144.000000                    262144.000000                   262144.000000               262144.000000                262144.000000           262144.000000                262144.000000                   262144.000000            262144.000000                   262144.000000                262144.000000               262144.000000                  262144.000000                  262144.000000              262144.000000                     262144.000000              262144.000000                   262144.000000                    262144.000000                     262144.000000                 262144.000000                  262144.000000                   262144.000000                        262144.000000   
mean                    -0.003244                0.002103                          0.002678               0.003714                        -0.008389                 -0.000028                       -0.000027                      0.006305                   -0.005581                 -0.006530                        -0.005904                       -0.002396                    0.001193                    -0.002326               -0.008586                    -0.007332                        0.000366                -0.006181                        0.001432                    -0.005780                   -0.019087                       0.004791                       0.009890                  -0.004958                          0.013919                  -0.001955                        0.002675                        -0.001670                          0.010285                      0.008633                      -0.013459                       -0.001463                            -0.008177   
std                      1.732773                1.793924                          1.730255               1.796030                         1.856790                  1.625396                        1.699064                      1.825149                    1.803933                  1.821762                         1.811753                        1.656447                    1.781390                     1.704468                1.862838                     1.813899                        1.796933                 1.770515                        1.729287                     1.771552                    1.576475                       1.781723                       1.684980                   1.714147                          1.721412                   1.712849                        1.766872                         1.712840                          1.707398                      1.791380                       1.700525                        1.742929                             1.692545   
min                    -17.705497              -18.105877                        -16.892344             -16.928099                       -17.286225                -15.529131                      -17.336651                    -14.616375                  -15.607438                -16.247247                       -18.674539                      -16.046640                  -15.540162                   -15.694457              -15.928776                   -15.371890                      -15.717886               -16.846875                      -15.919149                   -15.936419                  -17.232028                     -16.390824                     -15.820642                 -18.335999                        -14.694082                 -15.499871                      -15.666286                       -16.220352                        -16.297434                    -15.734520                     -19.495520                      -15.909426                           -16.715673   
25%                     -0.775571               -0.780058                         -0.768903              -0.782277                        -0.797478                 -0.756902                       -0.762304                     -0.786415                   -0.787167                 -0.791120                        -0.787857                       -0.760182                   -0.783879                    -0.766593               -0.796953                    -0.790700                       -0.781443                -0.778501                       -0.765161                    -0.778668                   -0.750506                      -0.779607                      -0.754403                  -0.763206                         -0.766510                  -0.766691                       -0.772756                        -0.766808                         -0.761853                     -0.780031                      -0.766071                       -0.777495                            -0.768637   
50%                      0.000513                0.005170                         -0.000947              -0.001289                        -0.002293                 -0.003144                       -0.000404                     -0.000736                   -0.003026                  0.001524                        -0.002048                       -0.001966                    0.001076                    -0.002587               -0.003306                     0.000402                       -0.001370                -0.001381                       -0.001214                    -0.004833                   -0.008903                       0.004080                      -0.000806                   0.001502                          0.007940                   0.002022                        0.002614                         0.000007                          0.006247                      0.003366                      -0.003197                        0.000893                            -0.003475   
75%                      0.770417                0.787911                          0.774247               0.777986                         0.793889                  0.753663                        0.765558                      0.789442                    0.782962                  0.787645                         0.788831                        0.755347                    0.783244                     0.762609                0.791361                     0.786745                        0.783932                 0.779167                        0.772025                     0.772064                    0.729665                       0.788646                       0.764755                   0.763599                          0.776007                   0.766627                        0.778789                         0.767045                          0.772083                      0.787801                       0.758882                        0.776701                             0.761480   
max                     16.380047               16.461692                         16.042834              16.760574                        17.325439                 16.180294                       14.802423                     16.320088                   15.152920                 15.393919                        14.860301                       17.851964                   18.403375                    18.977439               16.510793                    17.015628                       19.372636                17.351901                       15.484359                    14.622198                   14.822883                      14.563988                      14.901324                  16.296420                         19.158734                  15.456497                       16.240837                        15.929850                         16.576946                     17.167916                      16.651814                       14.891068                            15.861337   

       gloppy-buff-frigatebird-dataset  wheezy-lavender-catfish-master  gamy-plum-tarsier-kernel  flaky-crimson-wallaby-distraction  cheeky-pear-horse-fimbus  trippy-asparagus-bison-expert  lanky-aqua-bullfrog-important  stinky-olive-kiwi-golden  sickly-denim-oriole-important  gloppy-persimmon-bee-unsorted  stealthy-azure-gopher-hint  hasty-ivory-dragonfly-goose  flimsy-turquoise-fox-kernel  lousy-zucchini-seahorse-dummy  shabby-magenta-whippet-novice  chewy-lime-peccary-fimbus  nippy-burgundy-beagle-novice  gloppy-firebrick-moth-dataset  sleazy-russet-iguana-unsorted  surly-corn-tzu-kernel  skinny-myrtle-whippet-fepid  homey-tangerine-sloth-discard  blurry-green-dodo-important  skinny-champagne-mayfly-sorted  dorky-purple-kiwi-hint  beady-mauve-frog-distraction  surly-brass-maltese-ordinal  beady-asparagus-opossum-expert  beady-rust-impala-dummy  droopy-amethyst-dachshund-hint  homey-crimson-budgerigar-grandmaster  droopy-cardinal-impala-important  woozy-apricot-moose-hint  \
count                    262144.000000                   262144.000000             262144.000000                      262144.000000             262144.000000                  262144.000000                  262144.000000             262144.000000                  262144.000000                  262144.000000               262144.000000                262144.000000                262144.000000                  262144.000000                  262144.000000              262144.000000                 262144.000000                  262144.000000                  262144.000000          262144.000000                262144.000000                  262144.000000                262144.000000                   262144.000000           262144.000000                 262144.000000                262144.000000                   262144.000000            262144.000000                   262144.000000                         262144.000000                     262144.000000             262144.000000   
mean                          0.000131                       -0.000896                  0.004117                           0.001044                  0.007147                      -0.001945                      -0.009459                  0.005751                       0.004587                      -0.011684                    0.006896                    -0.005706                     0.007166                       0.004405                       0.002605                  -0.004567                      0.002482                       0.011272                      -0.002193               0.006847                     0.002285                       0.006492                    -0.001247                       -0.019775               -0.004227                     -0.002381                    -0.010963                        0.005069                 0.001779                        0.011217                             -0.000718                         -0.008141                  0.003521   
std                           1.758718                        1.730425                  1.751548                           1.784995                  1.804087                       1.850995                       1.829203                  1.815980                       1.676412                       1.672077                    1.773480                     1.829840                     1.693113                       1.828386                       1.793727                   1.773104                      1.859520                       1.840358                       1.850314               1.744581                     1.758474                       1.703115                     1.816563                        1.806329                1.725313                      1.774142                     1.727096                        1.710350                 1.747681                        1.873766                              1.769533                          1.734635                  1.691880   
min                         -18.206019                      -16.811929                -16.544572                         -16.115553                -15.189815                     -15.902316                     -16.156013                -16.228926                     -18.729543                     -16.368624                  -14.875404                   -17.187399                   -17.340560                     -16.306782                     -15.505096                 -14.857728                    -17.277046                     -15.205231                     -15.571140             -15.199850                   -14.629548                     -18.080150                   -16.288798                      -18.268207              -17.276733                    -15.697323                   -15.549593                      -15.984477               -14.826623                      -19.188606                            -16.045207                        -15.536694                -14.945959   
25%                          -0.776019                       -0.767382                 -0.777224                          -0.784548                 -0.784475                      -0.796612                      -0.793611                 -0.786812                      -0.756311                      -0.766676                   -0.771583                    -0.789053                    -0.759620                      -0.785014                      -0.783201                  -0.785378                     -0.796372                      -0.792097                      -0.794257              -0.772004                    -0.771537                      -0.764938                    -0.785611                       -0.793092               -0.772624                     -0.776379                    -0.780408                       -0.767824                -0.773896                       -0.796242                             -0.776701                         -0.777279                 -0.757839   
50%                           0.002128                        0.002344                  0.003214                          -0.001033                 -0.000003                      -0.002138                      -0.002087                  0.002871                       0.003013                      -0.004816                    0.005629                    -0.002502                     0.001903                       0.000655                      -0.001321                  -0.000793                     -0.000415                       0.007574                       0.001595               0.001867                     0.000661                       0.001767                     0.000203                       -0.005262               -0.000343                      0.000937                    -0.002320                        0.002214                 0.000339                        0.004685                              0.001403                         -0.009198                  0.003729   
75%                           0.779082                        0.771691                  0.776991                           0.783188                  0.792296                       0.795477                       0.790834                  0.796298                       0.760464                       0.750945                    0.780042                     0.789919                     0.772582                       0.790199                       0.783793                   0.778300                      0.795255                       0.797377                       0.792202               0.776400                     0.774226                       0.767621                     0.788519                        0.775833                0.770280                      0.775500                     0.767383                        0.768818                 0.772977                        0.806502                              0.775486                          0.764319                  0.762854   
max                          15.681365                       15.296874                 16.417492                          15.662614                 15.520257                      15.349528                      15.832499                 17.329479                      15.966576                      16.376505                   16.621014                    18.232613                    18.778281                      18.611169                      17.481889                  16.720387                     16.974994                      15.878253                      18.169196              17.980798                    15.746548                      15.155450                    16.656203                       17.318559               15.695715                     16.176833                    14.602126                       15.282156                15.946309                       16.399846                             15.427315                         14.597412                 15.010216   

       paltry-sapphire-labradoodle-dummy  crappy-carmine-eagle-entropy  greasy-magnolia-spider-grandmaster  crabby-carmine-flounder-sorted  skimpy-copper-fowl-grandmaster  hasty-seashell-woodpecker-hint  snappy-purple-bobcat-important  thirsty-carmine-corgi-ordinal  homely-auburn-reindeer-unsorted  crappy-beige-tiger-fepid  cranky-auburn-swan-novice  chewy-bistre-buzzard-expert  skinny-cyan-macaque-pembus  slimy-periwinkle-otter-expert  snazzy-burgundy-clam-novice  cozy-ochre-gorilla-gaussian  homey-sangria-wolfhound-dummy  snazzy-asparagus-hippopotamus-contributor  paltry-red-hamster-sorted  zippy-dandelion-insect-golden  baggy-coral-bandicoot-unsorted  goopy-lavender-wolverine-fimbus  wheezy-myrtle-mandrill-entropy  wiggy-lilac-lemming-sorted  gloppy-cerise-snail-contributor  woozy-silver-havanese-gaussian  jumpy-thistle-discus-sorted  muggy-turquoise-donkey-important  blurry-buff-hyena-entropy  bluesy-chocolate-kudu-fepid  gamy-white-monster-expert         target  
count                      262144.000000                 262144.000000                       262144.000000                   262144.000000                   262144.000000                   262144.000000                   262144.000000                  262144.000000                    262144.000000             262144.000000              262144.000000                262144.000000               262144.000000                  262144.000000                262144.000000                262144.000000                  262144.000000                              262144.000000              262144.000000                  262144.000000                   262144.000000                    262144.000000                   262144.000000               262144.000000                    262144.000000                   262144.000000                262144.000000                     262144.000000              262144.000000                262144.000000              262144.000000  262144.000000  
mean                            0.011593                     -0.011187                            0.001626                        0.000656                        0.007972                       -0.003604                        0.010641                       0.008723                        -0.002222                 -0.000222                  -0.001966                     0.012452                    0.010065                       0.019941                     0.002438                     0.007421                       0.006418                                  -0.001377                  -0.005976                       0.011046                       -0.001058                        -0.007541                       -0.002670                   -0.011401                         0.007895                        0.000651                    -0.002613                          0.002351                  -0.011684                    -0.007153                  -0.004066       0.500225  
std                             1.709808                      1.651178                            1.747964                        1.757856                        1.845592                        1.808498                        1.806801                       1.801394                         1.823901                  1.767555                   1.696124                     1.847551                    1.786441                       1.729407                     1.820585                     1.842801                       1.702032                                   1.768896                   1.744526                       1.806031                        1.845951                         1.734388                        1.799308                    1.788832                         1.775853                        1.703296                     1.692972                          1.742284                   1.698231                     1.759408                   1.661463       0.500001  
min                           -14.738427                    -15.321612                          -18.471287                      -15.637615                      -17.071420                      -16.837020                      -18.289074                     -15.876873                       -18.660168                -16.405136                 -16.962770                   -17.689697                  -15.391184                     -16.676546                   -16.242346                   -15.428478                     -15.213663                                 -15.615187                 -16.736959                     -17.325479                      -17.701414                       -14.209051                      -16.740804                  -17.681945                       -15.705197                      -15.765274                   -15.604682                        -16.965775                 -15.064518                   -16.145154                 -16.815640       0.000000  
25%                            -0.762797                     -0.760570                           -0.771469                       -0.775721                       -0.787209                       -0.789172                       -0.785432                      -0.781371                        -0.793220                 -0.778822                  -0.762225                    -0.787743                   -0.776295                      -0.754395                    -0.788463                    -0.789934                      -0.765082                                  -0.778429                  -0.777317                      -0.779243                       -0.798982                        -0.777831                       -0.782944                   -0.788437                        -0.778580                       -0.767367                    -0.764199                         -0.770457                  -0.768885                    -0.785702                  -0.766552       0.000000  
50%                             0.006625                     -0.005897                            0.001181                       -0.004775                        0.002720                       -0.003037                        0.000898                       0.005414                        -0.001182                 -0.000443                   0.000017                     0.010056                    0.004044                       0.007277                     0.002079                     0.001674                       0.001819                                   0.001125                  -0.003708                      -0.000665                       -0.001368                        -0.007404                       -0.002239                   -0.004543                        -0.000675                        0.000771                    -0.000331                         -0.000617                  -0.005634                    -0.004459                  -0.004471       1.000000  
75%                             0.772323                      0.752352                            0.773328                        0.776182                        0.796490                        0.789162                        0.792034                       0.788740                         0.785778                  0.775193                   0.763919                     0.798912                    0.782247                       0.778481                     0.788068                     0.796270                       0.767389                                   0.783034                   0.767407                       0.786449                        0.790400                         0.770104                        0.786180                    0.776178                         0.788910                        0.769277                     0.764115                          0.773100                   0.753518                     0.774197                   0.758012       1.000000  
max                            15.931864                     15.190043                           18.511841                       15.491450                       16.462407                       16.366581                       15.037548                      17.406346                        18.428578                 19.692337                  15.551620                    16.616120                   17.121966                      15.819361                    18.307258                    16.745289                      17.215588                                  15.609117                  16.784002                      16.436113                       15.832077                        16.727533                       15.511936                   16.252503                        16.387990                       16.260286                    14.748128                         16.212146                  18.866005                    18.811832                  17.302211       1.000000 

这里我们可以看到训练数据集各个特征的一些有效信息,count为不同数值的样本数量,这里看到几乎没有重复数据的特征。mean为特征均值,std为特征方差,min为最小值,max为最大值以及一些中间值。现在我们再来看一下标签的一些信息

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    print(train.target.value_counts())

运行结果

1    131131
0    131013
Name: target, dtype: int64

这里我们可以看到标签基本上是1:1的一个数据。现在我们来看一下某一列的分布状况

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    # print(train.target.value_counts())
    col = "muggy-smalt-axolotl-pembus"
    sns.distplot(train[col])
    plt.show()

运行结果

这里可以看到muggy-smalt-axolotl-pembus这个特征呈现的是一种正态分布。我们再来看看另外一个特征

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    # print(train.target.value_counts())
    # col = "muggy-smalt-axolotl-pembus"
    # sns.distplot(train[col])
    # plt.show()
    col = "dorky-peach-sheepdog-ordinal"
    sns.distplot(train[col])
    plt.show()

运行结果

由此,我们可以得出一些结论了

  1. 数据集很有可能是人造的数据集
  2. 特征很多200+,特征展示为数值类型

现在我们可以直接使用逻辑回归来试着建模看一下,这里我们使用交叉验证

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    # print(train.target.value_counts())
    # col = "muggy-smalt-axolotl-pembus"
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[col])
    # plt.show()
    feature_names = train.columns[1: -1]
    target = train['target']
    # 使用交叉验证,将数据集分成10份,随机打散的方式
    skf = StratifiedKFold(n_splits=10, shuffle=True)
    train_oof = np.zeros(train.shape[0])
    test_oof = np.zeros(test.shape[0])
    for trn_idx, val_idx in skf.split(train.values, target.values):
        # 查看标签在每一份数据集上的详情
        print(target.iloc[val_idx].value_counts())

运行结果

1    13113
0    13102
Name: target, dtype: int64
1    13113
0    13102
Name: target, dtype: int64
1    13113
0    13102
Name: target, dtype: int64
1    13114
0    13101
Name: target, dtype: int64
1    13113
0    13101
Name: target, dtype: int64
1    13113
0    13101
Name: target, dtype: int64
1    13113
0    13101
Name: target, dtype: int64
1    13113
0    13101
Name: target, dtype: int64
1    13113
0    13101
Name: target, dtype: int64
1    13113
0    13101
Name: target, dtype: int64

通过结果,我们可以看到标签在交叉验证分出的每一份数据集上基本都是保持1:1的比例。现在我们就可以在每一份数据集上进行划分训练数据集和验证数据集并开始逻辑回归的训练和打分

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    # print(train.target.value_counts())
    # col = "muggy-smalt-axolotl-pembus"
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[col])
    # plt.show()
    feature_names = train.columns[1: -1]
    target = train['target']
    # 使用交叉验证,将数据集分成10份,随机打散的方式
    skf = StratifiedKFold(n_splits=10, shuffle=True)
    train_oof = np.zeros(train.shape[0])
    test_oof = np.zeros(test.shape[0])
    for trn_idx, val_idx in skf.split(train.values, target.values):
        # 查看标签在每一份数据集上的详情
        # print(target.iloc[val_idx].value_counts())
        # 获取训练数据集
        X_train, y_train = train.iloc[trn_idx][feature_names], target.iloc[trn_idx]
        # 获取验证数据集
        X_val, y_val = train.iloc[val_idx][feature_names], target.iloc[val_idx]
        log_reg = LogisticRegression()
        log_reg.fit(X_train, y_train)
        # 使用逻辑回归对验证数据集进行概率预测
        val_pred = log_reg.predict_proba(X_val)[:, 1]
        train_oof[val_idx] = val_pred
        # 使用逻辑回归对测试数据集进行概率预测
        test_oof += log_reg.predict_proba(test[feature_names])[:, 1]
        # 打印模型精度
        print(roc_auc_score(y_val, val_pred))
    print(test_oof / 10)

运行结果

0.5359962112265747
0.5247807990716254
0.5243790331922549
0.5273370193635383
0.5354307152626394
0.5280931172838391
0.5315816386976373
0.5357084732928613
0.5318377835592567
0.5284348940666311
[0.50638266 0.50638908 0.52220606 ... 0.53511539 0.48049288 0.53848646]

根据结果,我们可以看到,在二分类的情况下,AUC的分数基本都在0.52附近,这就近乎于模型在瞎猜,模型精度非常差。现在我们需要对数据进行重新分析,来看一些每个特征它的取值空间大小。

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    # print(train.target.value_counts())
    # col = "muggy-smalt-axolotl-pembus"
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[col])
    # plt.show()
    feature_names = train.columns[1: -1]
    target = train['target']
    # 使用交叉验证,将数据集分成10份,随机打散的方式
    # skf = StratifiedKFold(n_splits=10, shuffle=True)
    # train_oof = np.zeros(train.shape[0])
    # test_oof = np.zeros(test.shape[0])
    # for trn_idx, val_idx in skf.split(train.values, target.values):
    #     # 查看标签在每一份数据集上的详情
    #     # print(target.iloc[val_idx].value_counts())
    #     # 获取训练数据集
    #     X_train, y_train = train.iloc[trn_idx][feature_names], target.iloc[trn_idx]
    #     # 获取验证数据集
    #     X_val, y_val = train.iloc[val_idx][feature_names], target.iloc[val_idx]
    #     log_reg = LogisticRegression()
    #     log_reg.fit(X_train, y_train)
    #     # 使用逻辑回归对验证数据集进行概率预测
    #     val_pred = log_reg.predict_proba(X_val)[:, 1]
    #     train_oof[val_idx] = val_pred
    #     # 使用逻辑回归对测试数据集进行概率预测
    #     test_oof += log_reg.predict_proba(test[feature_names])[:, 1]
    #     # 打印模型精度
    #     print(roc_auc_score(y_val, val_pred))
    # print(test_oof / 10)
    # 查看每一个特征的取值空间大小
    for col in train.columns[1: -1]:
        print(col, train[col].nunique())

运行结果

muggy-smalt-axolotl-pembus 254322
dorky-peach-sheepdog-ordinal 254588
slimy-seashell-cassowary-goose 254356
snazzy-harlequin-chicken-distraction 254576
frumpy-smalt-mau-ordinal 254330
stealthy-beige-pinscher-golden 254270
chummy-cream-tarantula-entropy 254324
hazy-emerald-cuttlefish-unsorted 254224
nerdy-indigo-wolfhound-sorted 254752
leaky-amaranth-lizard-sorted 254205
ugly-tangerine-chihuahua-important 254170
shaggy-silver-indri-fimbus 253956
flaky-chocolate-beetle-grandmaster 254352
squirrely-harlequin-sheep-sumble 254224
freaky-tan-angelfish-noise 254240
lousy-plum-penguin-sumble 254554
bluesy-rose-wallaby-discard 254273
baggy-copper-oriole-dummy 253989
stealthy-scarlet-hound-fepid 254548
greasy-cinnamon-bonobo-contributor 254417
cranky-cardinal-dogfish-ordinal 254235
snippy-auburn-vole-learn 254154
greasy-sepia-coral-dataset 254472
flabby-tangerine-fowl-entropy 254459
lousy-smalt-pinscher-dummy 254462
bluesy-brass-chihuahua-distraction 254302
goopy-eggplant-indri-entropy 254591
homey-sepia-bombay-sorted 254608
homely-ruby-bulldog-entropy 254375
hasty-blue-sheep-contributor 254446
blurry-wisteria-oyster-master 254642
snoopy-auburn-dogfish-expert 254194
stinky-maroon-blue-kernel 254430
bumpy-amaranth-armadillo-important 254494
slaphappy-peach-oyster-master 254489
dorky-tomato-ragdoll-dataset 254376
messy-mauve-wolverine-ordinal 254677
geeky-pumpkin-moorhen-important 254426
crabby-teal-otter-unsorted 254164
flaky-goldenrod-bat-noise 254409
beady-aquamarine-affenpinscher-grandmaster 254562
pasty-auburn-rat-entropy 254581
snappy-gamboge-caterpillar-dummy 254167
breezy-persimmon-newt-noise 254541
baggy-mustard-collie-hint 254397
sunny-red-weasel-hint 254597
cheeky-red-armadillo-unsorted 254117
wiggy-magnolia-wolfhound-sorted 254558
flimsy-chestnut-guppy-important 254625
beady-champagne-bullfrog-grandmaster 254558
lanky-emerald-alligator-kernel 254571
blurry-flax-sloth-fepid 254349
scanty-viridian-guppy-grandmaster 254416
blurry-amber-moth-dataset 254319
grumpy-zucchini-kudu-kernel 254512
chewy-myrtle-wasp-important 254209
snappy-lemon-okapi-ordinal 254397
cranky-eggplant-oyster-sumble 254505
snappy-pear-quoll-unsorted 254338
crappy-cream-shrew-unsorted 254524
bluesy-amber-walrus-fepid 254352
clammy-xanthic-affenpinscher-golden 254296
slimy-blue-alligator-master 254693
hazy-tan-schnauzer-hint 254947
breezy-aquamarine-sloth-sorted 254457
tasty-indigo-termite-ordinal 254545
thirsty-gamboge-dragonfly-kernel 254448
gloppy-turquoise-quoll-goose 254507
gamy-lilac-kakapo-expert 254652
geeky-amethyst-quetzal-unsorted 254511
hilly-lime-vole-novice 254396
baggy-champagne-capuchin-discard 254334
dorky-amaranth-eel-grandmaster 254607
hasty-pink-iguana-noise 254737
snoopy-red-zonkey-unsorted 254441
tasty-periwinkle-fousek-unsorted 254509
homey-scarlet-javanese-novice 254470
woozy-crimson-beetle-contributor 254393
snippy-burgundy-leopard-expert 254452
slimy-purple-gorilla-goose 254653
snappy-brass-malamute-entropy 254281
greasy-rust-birman-kernel 254301
goopy-copper-fousek-distraction 254314
snazzy-cerise-donkey-distraction 254698
squeaky-khaki-lionfish-distraction 254815
snazzy-malachite-llama-unsorted 254564
nerdy-violet-rat-pembus 254482
clammy-scarlet-emu-important 254594
lovely-sangria-koala-contributor 254316
blurry-sangria-saola-gaussian 254241
paltry-seashell-neanderthal-master 254412
crappy-pumpkin-saola-grandmaster 254354
smelly-tangerine-horse-gaussian 254378
cranky-magenta-mammoth-distraction 254373
hazy-champagne-duck-entropy 254515
flaky-cream-peccary-sorted 254731
pokey-russet-hippopotamus-master 254296
leaky-apricot-mammoth-unsorted 254386
flaky-brass-grasshopper-sorted 254564
skanky-cobalt-dolphin-sorted 254275
zippy-platinum-gharial-kernel 254372
sleazy-cinnamon-frog-grandmaster 254477
gloppy-denim-ostrich-gaussian 254485
smelly-yellow-akbash-important 254238
shaggy-sapphire-eel-unsorted 254351
queasy-peach-bison-sumble 254795
foggy-denim-hyrax-important 254379
grumpy-bronze-capybara-sumble 254293
ugly-green-earwig-noise 254366
slimy-thistle-cuscus-hint 254551
chummy-ruby-chinook-dataset 254063
cranky-champagne-jackal-gaussian 254809
lousy-wisteria-hornet-entropy 254251
wheezy-harlequin-earwig-gaussian 254004
tasty-buff-monkey-learn 254097
droopy-razzmatazz-bordeaux-dummy 254315
cozy-khaki-reindeer-golden 254384
greasy-crimson-squid-grandmaster 254422
dorky-turquoise-maltese-important 254122
lousy-blue-buffalo-entropy 254429
skinny-yellow-hedgehog-sumble 254288
pasty-flax-octopus-dataset 254667
pasty-sepia-eel-noise 254732
seedy-charcoal-capybara-ordinal 254093
cranky-ultramarine-swan-pembus 254625
hasty-puce-fowl-fepid 254496
sunny-purple-husky-noise 254561
stuffy-periwinkle-zebu-discard 254221
nerdy-teal-olm-fepid 254136
jumpy-blue-bison-sorted 254479
wiggy-denim-retriever-distraction 254777
messy-cardinal-lemur-distraction 254243
scanty-periwinkle-dhole-dataset 254083
snazzy-purple-donkey-discard 254600
skanky-carmine-rabbit-contributor 254247
wheezy-red-iguana-entropy 254419
gloppy-mauve-bonobo-important 254266
breezy-magenta-loon-hint 254406
skinny-ultramarine-cat-fimbus 255057
trippy-harlequin-maltese-expert 254657
breezy-myrtle-loon-discard 254775
woolly-gold-millipede-fimbus 254547
beady-lilac-hornet-expert 254496
bluesy-amethyst-octopus-gaussian 254336
dorky-cream-flamingo-novice 254514
lanky-puce-opossum-dummy 254417
wheezy-copper-turtle-magic 512
gimpy-asparagus-eagle-novice 254649
randy-ivory-eleuth-discard 254424
beady-orange-binturong-golden 254325
zippy-harlequin-otter-grandmaster 254301
cozy-vermilion-uguisu-grandmaster 254340
slimy-plum-cassowary-master 254536
seedy-chartreuse-whippet-hint 254425
messy-zucchini-tiger-contributor 254528
stealthy-yellow-lobster-goose 254371
snazzy-cream-macaque-novice 254509
muggy-pumpkin-scorpion-grandmaster 254321
lovely-plum-goat-novice 254187
ugly-tangerine-llama-goose 254414
silly-tan-tapir-pembus 254507
stuffy-aquamarine-audemer-fimbus 254455
cheeky-plum-fox-noise 254577
snoopy-heliotrope-squid-dataset 254824
slimy-azure-molly-sumble 254123
skanky-puce-discus-contributor 254245
flimsy-magnolia-gopher-learn 254747
paltry-sangria-lemur-fepid 254568
leaky-grey-gerbil-sorted 254666
craggy-maroon-civet-grandmaster 254715
wiggy-cinnamon-gecko-important 254289
skimpy-chocolate-dog-learn 254614
nippy-jade-squirt-important 254344
whiny-flax-sloth-learn 254713
freaky-olive-insect-ordinal 254516
boozy-amethyst-tarsier-dataset 254676
dorky-rose-whale-novice 254522
bumpy-amaranth-bonobo-gaussian 254408
squirrely-apricot-goat-hint 254515
lanky-coral-moorhen-expert 253919
greasy-scarlet-paradise-goose 254415
lousy-asparagus-tiger-discard 254170
smelly-brown-deer-entropy 254266
stealthy-chocolate-urchin-kernel 254491
flabby-beige-serval-noise 254457
skinny-indigo-tarantula-expert 254429
zippy-cerise-weasel-contributor 254434
nippy-pumpkin-rhinoceros-entropy 254305
pretty-copper-insect-discard 254546
grumpy-sapphire-akbash-fimbus 254277
pasty-aquamarine-numbat-pembus 254473
woolly-cinnabar-schnauzer-important 254326
gloppy-buff-frigatebird-dataset 254591
wheezy-lavender-catfish-master 254219
gamy-plum-tarsier-kernel 254543
flaky-crimson-wallaby-distraction 254504
cheeky-pear-horse-fimbus 254607
trippy-asparagus-bison-expert 254663
lanky-aqua-bullfrog-important 254731
stinky-olive-kiwi-golden 254554
sickly-denim-oriole-important 254279
gloppy-persimmon-bee-unsorted 254083
stealthy-azure-gopher-hint 254489
hasty-ivory-dragonfly-goose 254559
flimsy-turquoise-fox-kernel 254313
lousy-zucchini-seahorse-dummy 254577
shabby-magenta-whippet-novice 254398
chewy-lime-peccary-fimbus 254526
nippy-burgundy-beagle-novice 254768
gloppy-firebrick-moth-dataset 254581
sleazy-russet-iguana-unsorted 254752
surly-corn-tzu-kernel 254456
skinny-myrtle-whippet-fepid 254364
homey-tangerine-sloth-discard 254355
blurry-green-dodo-important 254530
skinny-champagne-mayfly-sorted 254469
dorky-purple-kiwi-hint 254376
beady-mauve-frog-distraction 254505
surly-brass-maltese-ordinal 254261
beady-asparagus-opossum-expert 254402
beady-rust-impala-dummy 254286
droopy-amethyst-dachshund-hint 254752
homey-crimson-budgerigar-grandmaster 254496
droopy-cardinal-impala-important 254422
woozy-apricot-moose-hint 254214
paltry-sapphire-labradoodle-dummy 254254
crappy-carmine-eagle-entropy 254165
greasy-magnolia-spider-grandmaster 254472
crabby-carmine-flounder-sorted 254521
skimpy-copper-fowl-grandmaster 254780
hasty-seashell-woodpecker-hint 254710
snappy-purple-bobcat-important 254733
thirsty-carmine-corgi-ordinal 254455
homely-auburn-reindeer-unsorted 254524
crappy-beige-tiger-fepid 254379
cranky-auburn-swan-novice 254298
chewy-bistre-buzzard-expert 254991
skinny-cyan-macaque-pembus 254508
slimy-periwinkle-otter-expert 254339
snazzy-burgundy-clam-novice 254705
cozy-ochre-gorilla-gaussian 254806
homey-sangria-wolfhound-dummy 254386
snazzy-asparagus-hippopotamus-contributor 254603
paltry-red-hamster-sorted 254348
zippy-dandelion-insect-golden 254631
baggy-coral-bandicoot-unsorted 254637
goopy-lavender-wolverine-fimbus 254465
wheezy-myrtle-mandrill-entropy 254718
wiggy-lilac-lemming-sorted 254630
gloppy-cerise-snail-contributor 254381
woozy-silver-havanese-gaussian 254383
jumpy-thistle-discus-sorted 254261
muggy-turquoise-donkey-important 254366
blurry-buff-hyena-entropy 254345
bluesy-chocolate-kudu-fepid 254329
gamy-white-monster-expert 254192

这里我们可以看到基本上所有的特征的取值空间都接近于样本数量26万。但是有一个特征的取值空间非常低wheezy-copper-turtle-magic 512,我们来看一下它的分布。

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    # print(train.target.value_counts())
    # col = "muggy-smalt-axolotl-pembus"
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[col])
    # plt.show()
    feature_names = train.columns[1: -1]
    target = train['target']
    # 使用交叉验证,将数据集分成10份,随机打散的方式
    # skf = StratifiedKFold(n_splits=10, shuffle=True)
    # train_oof = np.zeros(train.shape[0])
    # test_oof = np.zeros(test.shape[0])
    # for trn_idx, val_idx in skf.split(train.values, target.values):
    #     # 查看标签在每一份数据集上的详情
    #     # print(target.iloc[val_idx].value_counts())
    #     # 获取训练数据集
    #     X_train, y_train = train.iloc[trn_idx][feature_names], target.iloc[trn_idx]
    #     # 获取验证数据集
    #     X_val, y_val = train.iloc[val_idx][feature_names], target.iloc[val_idx]
    #     log_reg = LogisticRegression()
    #     log_reg.fit(X_train, y_train)
    #     # 使用逻辑回归对验证数据集进行概率预测
    #     val_pred = log_reg.predict_proba(X_val)[:, 1]
    #     train_oof[val_idx] = val_pred
    #     # 使用逻辑回归对测试数据集进行概率预测
    #     test_oof += log_reg.predict_proba(test[feature_names])[:, 1]
    #     # 打印模型精度
    #     print(roc_auc_score(y_val, val_pred))
    # print(test_oof / 10)
    # 查看每一个特征的取值空间大小
    # for col in train.columns[1: -1]:
    #     print(col, train[col].nunique())
    col = "wheezy-copper-turtle-magic"
    print(train[col].value_counts())
    sns.distplot(train[col])
    plt.show()

运行结果

51     570
489    556
298    554
135    554
245    553
      ... 
277    476
215    475
108    472
42     471
185    442
Name: wheezy-copper-turtle-magic, Length: 512, dtype: int64

由以上结果我们可以看到,该特征基本是处于一种均匀分布,而其他的特征基本都是正态分布,这就非常有问题了。我们来看一下当wheezy-copper-turtle-magic=10的时候,其他特征的分布情况

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    # print(train.target.value_counts())
    # col = "muggy-smalt-axolotl-pembus"
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[col])
    # plt.show()
    feature_names = train.columns[1: -1]
    target = train['target']
    # 使用交叉验证,将数据集分成10份,随机打散的方式
    # skf = StratifiedKFold(n_splits=10, shuffle=True)
    # train_oof = np.zeros(train.shape[0])
    # test_oof = np.zeros(test.shape[0])
    # for trn_idx, val_idx in skf.split(train.values, target.values):
    #     # 查看标签在每一份数据集上的详情
    #     # print(target.iloc[val_idx].value_counts())
    #     # 获取训练数据集
    #     X_train, y_train = train.iloc[trn_idx][feature_names], target.iloc[trn_idx]
    #     # 获取验证数据集
    #     X_val, y_val = train.iloc[val_idx][feature_names], target.iloc[val_idx]
    #     log_reg = LogisticRegression()
    #     log_reg.fit(X_train, y_train)
    #     # 使用逻辑回归对验证数据集进行概率预测
    #     val_pred = log_reg.predict_proba(X_val)[:, 1]
    #     train_oof[val_idx] = val_pred
    #     # 使用逻辑回归对测试数据集进行概率预测
    #     test_oof += log_reg.predict_proba(test[feature_names])[:, 1]
    #     # 打印模型精度
    #     print(roc_auc_score(y_val, val_pred))
    # print(test_oof / 10)
    # 查看每一个特征的取值空间大小
    # for col in train.columns[1: -1]:
    #     print(col, train[col].nunique())
    # col = "wheezy-copper-turtle-magic"
    # print(train[col].value_counts())
    # sns.distplot(train[col])
    # plt.show()
    col = "dorky-peach-sheepdog-ordinal"
    sns.distplot(train[train['wheezy-copper-turtle-magic'] == 10][col])
    plt.show()

运行结果

我们再看一下当wheezy-copper-turtle-magic=12的时候,其他特征的分布情况

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    # print(train.target.value_counts())
    # col = "muggy-smalt-axolotl-pembus"
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[col])
    # plt.show()
    feature_names = train.columns[1: -1]
    target = train['target']
    # 使用交叉验证,将数据集分成10份,随机打散的方式
    # skf = StratifiedKFold(n_splits=10, shuffle=True)
    # train_oof = np.zeros(train.shape[0])
    # test_oof = np.zeros(test.shape[0])
    # for trn_idx, val_idx in skf.split(train.values, target.values):
    #     # 查看标签在每一份数据集上的详情
    #     # print(target.iloc[val_idx].value_counts())
    #     # 获取训练数据集
    #     X_train, y_train = train.iloc[trn_idx][feature_names], target.iloc[trn_idx]
    #     # 获取验证数据集
    #     X_val, y_val = train.iloc[val_idx][feature_names], target.iloc[val_idx]
    #     log_reg = LogisticRegression()
    #     log_reg.fit(X_train, y_train)
    #     # 使用逻辑回归对验证数据集进行概率预测
    #     val_pred = log_reg.predict_proba(X_val)[:, 1]
    #     train_oof[val_idx] = val_pred
    #     # 使用逻辑回归对测试数据集进行概率预测
    #     test_oof += log_reg.predict_proba(test[feature_names])[:, 1]
    #     # 打印模型精度
    #     print(roc_auc_score(y_val, val_pred))
    # print(test_oof / 10)
    # 查看每一个特征的取值空间大小
    # for col in train.columns[1: -1]:
    #     print(col, train[col].nunique())
    # col = "wheezy-copper-turtle-magic"
    # print(train[col].value_counts())
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[train['wheezy-copper-turtle-magic'] == 10][col])
    # plt.show()
    col = "dorky-peach-sheepdog-ordinal"
    sns.distplot(train[train['wheezy-copper-turtle-magic'] == 12][col])
    plt.show()

运行结果

由上面两张图可以看出,当wheezy-copper-turtle-magic取不同值的时候,对于dorky-peach-sheepdog-ordinal特征来说,它的分布有很大的不同,首先是它的定义域在wheezy-copper-turtle-magic为10的时候,在[-4,4]之间,而当wheezy-copper-turtle-magic为12的时候,它的定义域在[-15,15]之间。此时得到另外一个推测,wheezy-copper-turtle-magic是不是对样本分组的变量。

那么我们现在就对wheezy-copper-turtle-magic进行分组,再来进行训练,测试,打分。先查看一下wheezy-copper-turtle-magic这个特征的最大值和最小值。

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    # print(train.target.value_counts())
    # col = "muggy-smalt-axolotl-pembus"
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[col])
    # plt.show()
    feature_names = train.columns[1: -1]
    target = train['target']
    # 使用交叉验证,将数据集分成10份,随机打散的方式
    # skf = StratifiedKFold(n_splits=10, shuffle=True)
    # train_oof = np.zeros(train.shape[0])
    # test_oof = np.zeros(test.shape[0])
    # for trn_idx, val_idx in skf.split(train.values, target.values):
    #     # 查看标签在每一份数据集上的详情
    #     # print(target.iloc[val_idx].value_counts())
    #     # 获取训练数据集
    #     X_train, y_train = train.iloc[trn_idx][feature_names], target.iloc[trn_idx]
    #     # 获取验证数据集
    #     X_val, y_val = train.iloc[val_idx][feature_names], target.iloc[val_idx]
    #     log_reg = LogisticRegression()
    #     log_reg.fit(X_train, y_train)
    #     # 使用逻辑回归对验证数据集进行概率预测
    #     val_pred = log_reg.predict_proba(X_val)[:, 1]
    #     train_oof[val_idx] = val_pred
    #     # 使用逻辑回归对测试数据集进行概率预测
    #     test_oof += log_reg.predict_proba(test[feature_names])[:, 1]
    #     # 打印模型精度
    #     print(roc_auc_score(y_val, val_pred))
    # print(test_oof / 10)
    # 查看每一个特征的取值空间大小
    # for col in train.columns[1: -1]:
    #     print(col, train[col].nunique())
    # col = "wheezy-copper-turtle-magic"
    # print(train[col].value_counts())
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[train['wheezy-copper-turtle-magic'] == 10][col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[train['wheezy-copper-turtle-magic'] == 12][col])
    # plt.show()
    col = "wheezy-copper-turtle-magic"
    print(train[col].min())
    print(train[col].max())

运行结果

0
511

现在我们知道了该特征是从0到511的一个均匀分布。

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # print(train.describe())
    # print(train.target.value_counts())
    # col = "muggy-smalt-axolotl-pembus"
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[col])
    # plt.show()
    feature_names = train.columns[1: -1]
    target = train['target']
    # 使用交叉验证,将数据集分成10份,随机打散的方式
    # skf = StratifiedKFold(n_splits=10, shuffle=True)
    # train_oof = np.zeros(train.shape[0])
    # test_oof = np.zeros(test.shape[0])
    # for trn_idx, val_idx in skf.split(train.values, target.values):
    #     # 查看标签在每一份数据集上的详情
    #     # print(target.iloc[val_idx].value_counts())
    #     # 获取训练数据集
    #     X_train, y_train = train.iloc[trn_idx][feature_names], target.iloc[trn_idx]
    #     # 获取验证数据集
    #     X_val, y_val = train.iloc[val_idx][feature_names], target.iloc[val_idx]
    #     log_reg = LogisticRegression()
    #     log_reg.fit(X_train, y_train)
    #     # 使用逻辑回归对验证数据集进行概率预测
    #     val_pred = log_reg.predict_proba(X_val)[:, 1]
    #     train_oof[val_idx] = val_pred
    #     # 使用逻辑回归对测试数据集进行概率预测
    #     test_oof += log_reg.predict_proba(test[feature_names])[:, 1]
    #     # 打印模型精度
    #     print(roc_auc_score(y_val, val_pred))
    # print(test_oof / 10)
    # 查看每一个特征的取值空间大小
    # for col in train.columns[1: -1]:
    #     print(col, train[col].nunique())
    # col = "wheezy-copper-turtle-magic"
    # print(train[col].value_counts())
    # sns.distplot(train[col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[train['wheezy-copper-turtle-magic'] == 10][col])
    # plt.show()
    # col = "dorky-peach-sheepdog-ordinal"
    # sns.distplot(train[train['wheezy-copper-turtle-magic'] == 12][col])
    # plt.show()
    # col = "wheezy-copper-turtle-magic"
    # print(train[col].min())
    # print(train[col].max())
    # 使用交叉验证,将数据集分成10份,随机打散的方式
    skf = StratifiedKFold(n_splits=10, shuffle=True)
    train_oof = np.zeros(train.shape[0])
    test_oof = np.zeros(test.shape[0])
    scores = []
    for trn_idx, val_idx in skf.split(train.values, target.values):
        # 获取训练数据集
        X_train = train.iloc[trn_idx]
        # 获取验证数据集
        X_val, y_val = train.iloc[val_idx][feature_names], target.iloc[val_idx]
        for i in tqdm(range(512)):
            X_train2 = X_train[X_train['wheezy-copper-turtle-magic'] == i]
            X_val2 = X_val[X_val['wheezy-copper-turtle-magic'] == i]
            test2 = test[test['wheezy-copper-turtle-magic'] == i]
            log_reg = LogisticRegression()
            log_reg.fit(X_train2[feature_names], X_train2.target)
            train_oof[X_val2.index] = log_reg.predict_proba(X_val2)[:, 1]
            if len(test2) != 0:
                test_oof[test2.index] += log_reg.predict_proba(test2[feature_names])[:, 1]
        scores.append(roc_auc_score(target[val_idx], train_oof[val_idx]))
    print(np.mean(scores))

运行结果

100%|██████████| 512/512 [00:13<00:00, 38.18it/s]
100%|██████████| 512/512 [00:13<00:00, 36.99it/s]
100%|██████████| 512/512 [00:14<00:00, 35.28it/s]
100%|██████████| 512/512 [00:15<00:00, 32.38it/s]
100%|██████████| 512/512 [00:14<00:00, 36.29it/s]
100%|██████████| 512/512 [00:14<00:00, 36.36it/s]
100%|██████████| 512/512 [00:14<00:00, 35.62it/s]
100%|██████████| 512/512 [00:14<00:00, 36.02it/s]
100%|██████████| 512/512 [00:15<00:00, 33.57it/s]
100%|██████████| 512/512 [00:14<00:00, 36.24it/s]
0.718729816941037

通过结果,我们可以看到,经过了wheezy-copper-turtle-magic对数据集进行了分组之后,模型精度由52%提升到了71.8%。

现在我们在这个特征取各个值的时候,来看一下其他特征的方差。

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    train1 = train[train['wheezy-copper-turtle-magic'] == 1]
    print(train1.shape)
    print(train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std())
    train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std().plot()
    plt.show()

运行结果

(510, 258)
muggy-smalt-axolotl-pembus              0.968727
dorky-peach-sheepdog-ordinal            0.982441
slimy-seashell-cassowary-goose          1.053469
snazzy-harlequin-chicken-distraction    0.988875
frumpy-smalt-mau-ordinal                1.017911
                                          ...   
jumpy-thistle-discus-sorted             1.018958
muggy-turquoise-donkey-important        0.947320
blurry-buff-hyena-entropy               1.001324
bluesy-chocolate-kudu-fepid             1.019516
gamy-white-monster-expert               1.032246
Length: 255, dtype: float64

通过这个图,我们可以看到,当wheezy-copper-turtle-magic取值为1的时候,有一些特征的方差很大,有一些却很小。我们将该数据集排列后再来看看它的方差图。

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    train1 = train[train['wheezy-copper-turtle-magic'] == 1]
    print(train1.shape)
    df = train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std()
    # train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std().plot()
    # plt.show()
    df.sort_values().plot()
    plt.show()

运行结果

很明显,存在某个位置,它的特征方差突然到了3以上。我们可以用柱状图来看一下。

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    train1 = train[train['wheezy-copper-turtle-magic'] == 1]
    print(train1.shape)
    df = train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std()
    # train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std().plot()
    # plt.show()
    df.sort_values().plot(kind='bar')
    print(df.sort_values())
    plt.show()

运行结果

(510, 258)
dorky-cream-flamingo-novice             0.932373
grumpy-sapphire-akbash-fimbus           0.933063
bluesy-amethyst-octopus-gaussian        0.936354
stealthy-yellow-lobster-goose           0.940528
crappy-carmine-eagle-entropy            0.944902
                                          ...   
snoopy-red-zonkey-unsorted              3.651350
bumpy-amaranth-armadillo-important      3.659794
beady-champagne-bullfrog-grandmaster    3.729860
skimpy-copper-fowl-grandmaster          3.759661
shaggy-silver-indri-fimbus              3.824063
Length: 255, dtype: float64

现在我们更换wheezy-copper-turtle-magic的值来看一下

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    train1 = train[train['wheezy-copper-turtle-magic'] == 90]
    print(train1.shape)
    df = train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std()
    # train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std().plot()
    # plt.show()
    df.sort_values().plot(kind='bar')
    print(df.sort_values())
    plt.show()

运行结果

(506, 258)
dorky-rose-whale-novice             0.895112
flimsy-chestnut-guppy-important     0.902417
snappy-gamboge-caterpillar-dummy    0.928210
chummy-cream-tarantula-entropy      0.929582
nerdy-teal-olm-fepid                0.936252
                                      ...   
paltry-red-hamster-sorted           3.693810
wiggy-lilac-lemming-sorted          3.706607
crappy-carmine-eagle-entropy        3.720632
slimy-purple-gorilla-goose          3.750353
stealthy-chocolate-urchin-kernel    3.834604
Length: 255, dtype: float64

这里可以看到当wheezy-copper-turtle-magic取不同值时,结果是类似的。

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    train1 = train[train['wheezy-copper-turtle-magic'] == 91]
    print(train1.shape)
    df = train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std()
    # train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std().plot()
    # plt.show()
    df.sort_values().plot(kind='bar')
    print(df.sort_values())
    plt.show()

运行结果

(505, 258)
whiny-flax-sloth-learn                 0.913176
beady-lilac-hornet-expert              0.927569
scanty-periwinkle-dhole-dataset        0.938083
cranky-champagne-jackal-gaussian       0.941339
trippy-harlequin-maltese-expert        0.951246
                                         ...   
stealthy-beige-pinscher-golden         3.974469
clammy-xanthic-affenpinscher-golden    3.976151
droopy-cardinal-impala-important       4.021063
crappy-carmine-eagle-entropy           4.048641
pasty-auburn-rat-entropy               4.206355
Length: 255, dtype: float64

同时我们也发现,其他的特征也是比较固定的。也就是说在当wheezy-copper-turtle-magic取不同值时,有一些特征总是方差比较大,有一些特征总是方差比较小。那么现在我们就利用方差来进行特征筛选。看看特征筛选后的数据集的样子

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import VarianceThreshold

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    train1 = train[train['wheezy-copper-turtle-magic'] == 91]
    print(train1.shape)
    df = train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std()
    # train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std().plot()
    # plt.show()
    # df.sort_values().plot(kind='bar')
    # print(df.sort_values())
    # plt.show()
    data2 = VarianceThreshold(threshold=2).fit_transform(train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1))
    train_oof = np.zeros(train.shape[0])
    test_oof = np.zeros(test.shape[0])
    col = [c for c in train.columns if c not in ['id', 'wheezy-copper-turtle-magic', 'target']]
    for i in range(512):
        # 获取分组训练数据集
        train2 = train[train['wheezy-copper-turtle-magic'] == i]
        # 获取分组测试数据集
        test2 = test[test['wheezy-copper-turtle-magic'] == i]
        # 对分组训练数据集进行方差特征筛选,阈值为2
        train3 = VarianceThreshold(threshold=2).fit_transform(train2[col])
        # 对分组测试数据集进行方差特征筛选,阈值为2
        test3 = None
        if len(test2) != 0:
            test3 = VarianceThreshold(threshold=2).fit_transform(test2[col])
        # 使用交叉验证,将数据集划分成5份
        skf = StratifiedKFold(n_splits=5)
        for tr_idx, val_idx in skf.split(train2, train2.target):
            # 打印交叉验证数据集的样本数量和维度
            if test3 is not None:
                print(train3[tr_idx].shape, train3[val_idx].shape, test3[val_idx].shape)
            else:
                print(train3[tr_idx].shape, train3[val_idx].shape)
            break
        break

运行结果

(505, 258)
(427, 46) (107, 46)

这里我们只打印了一组数据,通过结果,我们可以看到通过特征筛选后,训练数据集和验证数据集分别为427个样本和107个样本,维度都是46.当然在wheezy-copper-turtle-magic=0的时候,没有测试数据集。而且通过方差筛选留下来的这些特征都是非常有意义的。

现在我们来进行二次判别分析,所谓二次判别分析与线性判别分析类似,二次判别分析是另外一种线性判别分析算法,二者拥有类似的算法特征,区别仅在于:当不同分类样本的协方差矩阵相同时,使用线性判别分析;当不同分类样本的协方差矩阵不同时,则应该使用二次判别。

plot_lda_qda_00111

由图中可以看出,在固定协方差矩阵下,LDA和QDA是没有分类结果差异的(上面两张图);但在不同的协方差矩阵下,LDA和QDA的决策边界明显存在差异,而且LDA已经不能准确的划分数据(下面两张图),有关协方差矩阵的内容请参考概率论整理(二)

INPUT_PATH = "/Users/admin/Downloads/instant-gratification/"
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 警告不输出
import warnings
warnings.filterwarnings("ignore")
import time
import gc
# 进度条
from tqdm import tqdm
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import VarianceThreshold
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis

if __name__ == "__main__":

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train = pd.read_csv(INPUT_PATH + "train.csv")
    test = pd.read_csv(INPUT_PATH + "test.csv")
    train1 = train[train['wheezy-copper-turtle-magic'] == 91]
    print(train1.shape)
    df = train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std()
    # train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1).std().plot()
    # plt.show()
    # df.sort_values().plot(kind='bar')
    # print(df.sort_values())
    # plt.show()
    data2 = VarianceThreshold(threshold=2).fit_transform(train1.drop(['id', 'wheezy-copper-turtle-magic', 'target'], axis=1))
    train_oof = np.zeros(train.shape[0])
    test_oof = np.zeros(test.shape[0])
    col = [c for c in train.columns if c not in ['id', 'wheezy-copper-turtle-magic', 'target']]
    for i in tqdm(range(512)):
        # 获取分组训练数据集
        train2 = train[train['wheezy-copper-turtle-magic'] == i]
        # 获取分组测试数据集
        test2 = test[test['wheezy-copper-turtle-magic'] == i]
        # 对分组训练数据集进行方差特征筛选,阈值为2
        train3 = VarianceThreshold(threshold=2).fit_transform(train2[col])
        # 对分组测试数据集进行方差特征筛选,阈值为2
        test3 = None
        if len(test2) != 0:
            test3 = VarianceThreshold(threshold=2).fit_transform(test2[col])
        # 使用交叉验证,将数据集划分成5份
        skf = StratifiedKFold(n_splits=5)
        for tr_idx, val_idx in skf.split(train2, train2.target):
            # 打印交叉验证数据集的样本数量和维度
            # if test3 is not None:
            #     print(train3[tr_idx].shape, train3[val_idx].shape, test3[val_idx].shape)
            # else:
            #     print(train3[tr_idx].shape, train3[val_idx].shape)
            # 进行二次判别分析
            clf = QuadraticDiscriminantAnalysis()
            clf.fit(train3[tr_idx], train2.target.iloc[tr_idx])
            train_oof[train2.iloc[val_idx].index] = clf.predict_proba(train3[val_idx])[:, 1]
            if len(test2) != 0:
                test_oof[test2.index] = clf.predict_proba(test3)[:, 1] / 5
    auc = roc_auc_score(train['target'], train_oof)
    print(f'AUC:{auc:0.5}')

运行结果

(505, 258)
100%|██████████| 512/512 [00:08<00:00, 57.15it/s]
AUC:0.96264

这里可以看到最终我们得到的模型精度达到了96.2%。这里需要说明的是,其实这道赛题的数据就是通过scikit-learn的make_classification创造出来的,有兴趣的朋友可以参考https://www.kaggle.com/mhviraf/synthetic-data-for-next-instant-gratification

IEEE-CIS Fraud Detection

IEEE-CIS欺诈检测,银行卡盗刷等欺诈行为,通过信用卡交易信息识别交易欺诈行为,减少欺诈损失。

数据下载页面:https://www.kaggle.com/c/ieee-fraud-detection/data

二分类问题,使用AUC进行评价。对于测试数据集的TransactionID,需要预测概率值,并与真实的标签进行评价。

赛题数据:identity表和transaction表

  1. identity表:交易身份,如网络、代理、IP和设备等,共40列,其中DeviceType、DeviceInfo和id_12 - id_38为类别类型
  2. transaction表:交易记录,如金额、交易类型、订单信息等。共392列,其中ProductCD、card1 - card6、addr1 - addr2、P_emaldomain、R_emaildomain和M1 - M9为类别类型

数据集TransactionID是主键,isFraud是标签,我们先读取50000行数据,看看数据的样子

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
import seaborn as sns

if __name__ == "__main__":

    # 数据量太大,我们只取50000行
    nrows = 50000
    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", nrows=nrows)
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", nrows=nrows)
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", nrows=nrows)
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", nrows=nrows)
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # 合并数据集
    train_df = pd.merge(train_transaction, train_identity, on='TransactionID', how='left')
    test_df = pd.merge(test_transaction, test_identity, on='TransactionID', how='left')
    print(train_df.head())
    print(test_df.head())

运行结果

   TransactionID  isFraud  TransactionDT  TransactionAmt ProductCD  card1  card2  card3       card4  card5   card6  addr1  addr2  dist1  dist2 P_emaildomain R_emaildomain   C1   C2   C3   C4   C5   C6   C7   C8   C9  C10  C11  C12   C13  C14     D1     D2    D3    D4   D5  D6  D7  D8  D9   D10    D11  D12  D13  D14    D15   M1   M2   M3   M4   M5   M6   M7   M8   M9   V1   V2   V3   V4   V5   V6   V7   V8   V9  V10  V11  V12  V13  V14  V15  V16  V17  V18  V19  V20  V21  V22  V23  V24  V25  V26  V27  V28  V29  V30  V31  V32  V33  V34  V35  V36  V37  V38  V39  V40  V41  V42  V43  V44  V45  V46  V47  V48  V49  V50  V51  V52  V53  V54  V55  V56  V57  V58  V59  V60  V61  V62  V63  V64  V65  V66  V67  V68  V69  V70  V71  V72  V73  V74  V75  V76  V77  V78  V79  V80  V81  V82  V83  V84  V85  V86  V87  V88  V89  V90  V91  V92  V93  V94  V95   V96   V97  V98   V99  V100  V101  V102  V103  V104  V105  V106  V107  V108  V109  V110  V111  V112  V113  V114  V115  V116  V117  V118  V119  V120  \
0        2987000        0          86400            68.5         W  13926    NaN  150.0    discover  142.0  credit  315.0   87.0   19.0    NaN           NaN           NaN  1.0  1.0  0.0  0.0  0.0  1.0  0.0  0.0  1.0  0.0  2.0  0.0   1.0  1.0   14.0    NaN  13.0   NaN  NaN NaN NaN NaN NaN  13.0   13.0  NaN  NaN  NaN    0.0    T    T    T   M2    F    T  NaN  NaN  NaN  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   1.0   0.0  0.0   0.0   0.0   0.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
1        2987001        0          86401            29.0         W   2755  404.0  150.0  mastercard  102.0  credit  325.0   87.0    NaN    NaN     gmail.com           NaN  1.0  1.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   0.0  NaN NaN NaN NaN NaN   0.0    NaN  NaN  NaN  NaN    0.0  NaN  NaN  NaN   M0    T    T  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  0.0  0.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0  0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
2        2987002        0          86469            59.0         W   4663  490.0  150.0        visa  166.0   debit  330.0   87.0  287.0    NaN   outlook.com           NaN  1.0  1.0  0.0  0.0  0.0  1.0  0.0  0.0  1.0  0.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   0.0  NaN NaN NaN NaN NaN   0.0  315.0  NaN  NaN  NaN  315.0    T    T    T   M0    F    F    F    F    F  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0  0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
3        2987003        0          86499            50.0         W  18132  567.0  150.0  mastercard  117.0   debit  476.0   87.0    NaN    NaN     yahoo.com           NaN  2.0  5.0  0.0  0.0  0.0  4.0  0.0  0.0  1.0  0.0  1.0  0.0  25.0  1.0  112.0  112.0   0.0  94.0  0.0 NaN NaN NaN NaN  84.0    NaN  NaN  NaN  NaN  111.0  NaN  NaN  NaN   M0    T    F  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  48.0  28.0  0.0  10.0   4.0   1.0  38.0  24.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
4        2987004        0          86506            50.0         H   4497  514.0  150.0  mastercard  102.0  credit  420.0   87.0    NaN    NaN     gmail.com           NaN  1.0  1.0  0.0  0.0  0.0  1.0  0.0  1.0  0.0  1.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   NaN  NaN NaN NaN NaN NaN   NaN    NaN  NaN  NaN  NaN    NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  0.0   0.0   0.0  0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   

   V121  V122  V123  V124  V125  V126    V127   V128  V129   V130   V131  V132    V133   V134  V135  V136  V137  V138  V139  V140  V141  V142  V143  V144   V145  V146  V147  V148  V149    V150  V151  V152  V153  V154  V155  V156  V157  V158          V159           V160  V161  V162  V163   V164    V165    V166  V167  V168  V169  V170  V171  V172  V173  V174  V175  V176  V177  V178  V179  V180  V181  V182  V183  V184  V185  V186  V187  V188  V189  V190  V191  V192  V193  V194  V195  V196  V197  V198  V199  V200  V201  V202  V203  V204  V205  V206  V207  V208  V209  V210  V211  V212  V213  V214  V215  V216  V217  V218  V219  V220  V221  V222  V223  V224  V225  V226  V227  V228  V229  V230  V231  V232  V233  V234  V235  V236  V237  V238  V239  V240  V241  V242  V243  V244  V245  V246  V247  V248  V249  V250  V251  V252  V253  V254  V255  V256  V257  V258  V259  V260  V261  V262  V263  V264  V265  V266  V267  V268  V269  V270  V271  V272  V273  V274  V275  V276  V277  V278  V279  V280  \
0   1.0   1.0   1.0   1.0   1.0   0.0   117.0    0.0   0.0    0.0    0.0   0.0   117.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   
1   1.0   1.0   1.0   1.0   1.0   0.0     0.0    0.0   0.0    0.0    0.0   0.0     0.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   
2   1.0   1.0   1.0   1.0   1.0   0.0     0.0    0.0   0.0    0.0    0.0   0.0     0.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   
3   1.0   1.0   1.0   1.0   1.0  50.0  1758.0  925.0   0.0  354.0  135.0  50.0  1404.0  790.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   1.0  28.0   
4   1.0   1.0   1.0   1.0   1.0   0.0     0.0    0.0   0.0    0.0    0.0   0.0     0.0    0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   6.0  18.0  140.0   0.0   0.0   0.0   0.0  1803.0  49.0  64.0   0.0   0.0   0.0   0.0   0.0   0.0  15557.990234  169690.796875   0.0   0.0   0.0  515.0  5155.0  2840.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   

   V281  V282  V283  V284  V285  V286  V287  V288  V289  V290  V291  V292  V293  V294  V295  V296  V297  V298  V299  V300  V301  V302  V303  V304  V305  V306    V307   V308  V309   V310  V311   V312  V313  V314  V315  V316    V317   V318  V319  V320  V321  V322  V323  V324  V325  V326  V327  V328  V329  V330  V331  V332  V333  V334  V335  V336  V337  V338  V339  id_01    id_02  id_03  id_04  id_05  id_06  id_07  id_08  id_09  id_10  id_11     id_12  id_13  id_14 id_15     id_16  id_17  id_18  id_19  id_20  id_21  id_22 id_23  id_24  id_25  id_26 id_27 id_28     id_29        id_30                id_31  id_32      id_33           id_34 id_35 id_36 id_37 id_38 DeviceType                     DeviceInfo  
0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.0   117.0    0.0   0.0    0.0   0.0    0.0   0.0   0.0   0.0   0.0   117.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN       NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN       NaN          NaN                  NaN    NaN        NaN             NaN   NaN   NaN   NaN   NaN        NaN                            NaN  
1   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.0     0.0    0.0   0.0    0.0   0.0    0.0   0.0   0.0   0.0   0.0     0.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN       NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN       NaN          NaN                  NaN    NaN        NaN             NaN   NaN   NaN   NaN   NaN        NaN                            NaN  
2   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.0     0.0    0.0   0.0    0.0   0.0    0.0   0.0   0.0   0.0   0.0     0.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN       NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN       NaN          NaN                  NaN    NaN        NaN             NaN   NaN   NaN   NaN   NaN        NaN                            NaN  
3   0.0   0.0   0.0   0.0  10.0   0.0   4.0   0.0   0.0   1.0   1.0   1.0   1.0  38.0  24.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0  50.0  1758.0  925.0   0.0  354.0   0.0  135.0   0.0   0.0   0.0  50.0  1404.0  790.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN       NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN       NaN          NaN                  NaN    NaN        NaN             NaN   NaN   NaN   NaN   NaN        NaN                            NaN  
4   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   0.0     0.0    0.0   0.0    0.0   0.0    0.0   0.0   0.0   0.0   0.0     0.0    0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0    0.0  70787.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN  100.0  NotFound    NaN -480.0   New  NotFound  166.0    NaN  542.0  144.0    NaN    NaN   NaN    NaN    NaN    NaN   NaN   New  NotFound  Android 7.0  samsung browser 6.2   32.0  2220x1080  match_status:2     T     F     T     T     mobile  SAMSUNG SM-G892A Build/NRD90M  
   TransactionID  TransactionDT  TransactionAmt ProductCD  card1  card2  card3       card4  card5  card6  addr1  addr2   dist1  dist2 P_emaildomain R_emaildomain   C1   C2   C3   C4   C5   C6   C7   C8   C9  C10  C11  C12    C13  C14     D1     D2    D3     D4    D5  D6  D7  D8  D9    D10    D11  D12  D13  D14    D15 M1 M2 M3   M4   M5 M6   M7   M8   M9   V1   V2   V3   V4   V5   V6   V7   V8   V9  V10  V11  V12  V13  V14  V15  V16  V17  V18  V19  V20  V21  V22  V23  V24  V25  V26  V27  V28  V29  V30  V31  V32  V33  V34  V35  V36  V37  V38  V39  V40  V41  V42  V43  V44  V45  V46  V47  V48  V49  V50  V51  V52  V53  V54  V55  V56  V57  V58  V59  V60  V61  V62  V63  V64  V65  V66  V67  V68  V69  V70  V71  V72  V73  V74  V75  V76  V77  V78  V79  V80  V81  V82  V83  V84  V85  V86  V87  V88  V89  V90  V91  V92  V93  V94  V95  V96  V97  V98  V99  V100  V101  V102  V103  V104  V105  V106  V107  V108  V109  V110  V111  V112  V113  V114  V115  V116  V117  V118  V119  V120  V121  V122  V123  \
0        3663549       18403224           31.95         W  10409  111.0  150.0        visa  226.0  debit  170.0   87.0     1.0    NaN     gmail.com           NaN  6.0  6.0  0.0  0.0  3.0  4.0  0.0  0.0  6.0  0.0  5.0  1.0  115.0  6.0  419.0  419.0  27.0  398.0  27.0 NaN NaN NaN NaN  418.0  203.0  NaN  NaN  NaN  409.0  T  T  F  NaN  NaN  F    T    T    T  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
1        3663550       18403263           49.00         W   4272  111.0  150.0        visa  226.0  debit  299.0   87.0     4.0    NaN       aol.com           NaN  3.0  2.0  0.0  0.0  0.0  1.0  0.0  0.0  2.0  0.0  1.0  1.0   12.0  2.0  149.0  149.0   7.0  634.0   7.0 NaN NaN NaN NaN  231.0  634.0  NaN  NaN  NaN  634.0  T  F  F   M0  NaN  F  NaN  NaN  NaN  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  4.0  1.0  0.0  4.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
2        3663551       18403310          171.00         W   4476  574.0  150.0        visa  226.0  debit  472.0   87.0  2635.0    NaN   hotmail.com           NaN  2.0  2.0  0.0  0.0  0.0  5.0  0.0  0.0  4.0  0.0  2.0  0.0   22.0  2.0  137.0  137.0  10.0   97.0  10.0 NaN NaN NaN NaN  136.0  136.0  NaN  NaN  NaN   97.0  T  T  F   M0    F  F    F    F    F  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  2.0  2.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  2.0  1.0  2.0  0.0  0.0  0.0  1.0  2.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  5.0  0.0  0.0  3.0   0.0   0.0   0.0   0.0   0.0   2.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
3        3663552       18403310          284.95         W  10989  360.0  150.0        visa  166.0  debit  205.0   87.0    17.0    NaN     gmail.com           NaN  5.0  2.0  0.0  0.0  1.0  1.0  0.0  0.0  2.0  0.0  2.0  0.0    7.0  4.0   42.0   42.0  41.0  242.0  41.0 NaN NaN NaN NaN  242.0  242.0  NaN  NaN  NaN  242.0  T  T  T  NaN  NaN  T  NaN  NaN  NaN  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  2.0  2.0  2.0  2.0  0.0  0.0  1.0  0.0  0.0  2.0  2.0  2.0  2.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
4        3663553       18403317           67.95         W  18018  452.0  150.0  mastercard  117.0  debit  264.0   87.0     6.0    NaN     gmail.com           NaN  6.0  6.0  0.0  0.0  2.0  5.0  0.0  0.0  5.0  0.0  6.0  0.0   14.0  6.0   22.0   22.0   0.0   22.0   0.0 NaN NaN NaN NaN   22.0   22.0  NaN  NaN  NaN   22.0  T  T  T  NaN  NaN  F    F    T    T  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  1.0  3.0  1.0  1.0  3.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   

   V124  V125       V126        V127       V128       V129        V130       V131  V132  V133  V134  V135   V136  V137  V138  V139  V140  V141  V142  V143  V144  V145  V146  V147  V148  V149  V150  V151  V152  V153  V154  V155  V156  V157  V158  V159  V160  V161  V162  V163  V164  V165  V166  V167  V168  V169  V170  V171  V172  V173  V174  V175  V176  V177  V178  V179  V180  V181  V182  V183  V184  V185  V186  V187  V188  V189  V190  V191  V192  V193  V194  V195  V196  V197  V198  V199  V200  V201  V202  V203  V204  V205  V206  V207  V208  V209  V210  V211  V212  V213  V214  V215  V216  V217  V218  V219  V220  V221  V222  V223  V224  V225  V226  V227  V228  V229  V230  V231  V232  V233  V234  V235  V236  V237  V238  V239  V240  V241  V242  V243  V244  V245  V246  V247  V248  V249  V250  V251  V252  V253  V254  V255  V256  V257  V258  V259  V260  V261  V262  V263  V264  V265  V266  V267  V268  V269  V270  V271  V272  V273  V274  V275  V276  V277  V278  V279  V280  V281  V282  V283  \
0   1.0   1.0   0.000000   47.950001   0.000000   0.000000   47.950001   0.000000   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   0.0   0.0   0.0   
1   1.0   1.0   0.000000  280.000000  77.000000   0.000000  280.000000  77.000000   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   1.0   0.0   0.0   0.0   
2   1.0   1.0   0.000000  968.000000   0.000000   0.000000  705.000000   0.000000   0.0   0.0   0.0   0.0  263.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   0.0   0.0   0.0   
3   1.0   1.0   0.000000    0.000000   0.000000   0.000000    0.000000   0.000000   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   0.0   1.0   1.0   
4   1.0   1.0  67.949997  183.850006  67.949997  67.949997  183.850006  67.949997   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   1.0   1.0   0.0   1.0   1.0   

   V284  V285  V286  V287  V288  V289  V290  V291  V292  V293  V294  V295  V296  V297  V298  V299  V300  V301  V302  V303  V304  V305       V306         V307       V308       V309         V310       V311       V312        V313        V314        V315  V316  V317  V318  V319   V320  V321  V322  V323  V324  V325  V326  V327  V328  V329  V330  V331  V332  V333  V334  V335  V336  V337  V338  V339  id-01  id-02  id-03  id-04  id-05  id-06  id-07  id-08  id-09  id-10  id-11 id-12  id-13  id-14 id-15 id-16  id-17  id-18  id-19  id-20  id-21  id-22 id-23  id-24  id-25  id-26 id-27 id-28 id-29 id-30 id-31  id-32 id-33 id-34 id-35 id-36 id-37 id-38 DeviceType DeviceInfo  
0   0.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.000000    47.950001   0.000000   0.000000    47.950001   0.000000   0.000000    0.000000    0.000000    0.000000   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN   NaN   NaN        NaN        NaN  
1   0.0   4.0   0.0   1.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.000000   280.000000  77.000000   0.000000   280.000000   0.000000  77.000000    0.000000    0.000000    0.000000   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN   NaN   NaN        NaN        NaN  
2   0.0   4.0   0.0   0.0   0.0   0.0   1.0   2.0   1.0   0.0   0.0   0.0   2.0   0.0   2.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.000000  1321.000000   0.000000   0.000000  1058.000000   0.000000   0.000000    0.000000    0.000000    0.000000   0.0   0.0   0.0   0.0  263.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN   NaN   NaN        NaN        NaN  
3   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.000000     0.000000   0.000000   0.000000     0.000000   0.000000   0.000000  282.540009  282.540009  282.540009   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN   NaN   NaN        NaN        NaN  
4   1.0   3.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0  67.949997   183.850006  67.949997  67.949997   183.850006  67.949997  67.949997   67.949997  183.850006   67.949997   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN   NaN   NaN        NaN        NaN

通过原始数据,我们可以看到,它有一些是类别类型的特征,而有一些特征是缺失的。现在我们来看一下训练数据集和测试数据集的时间信息

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

if __name__ == "__main__":

    # 数据量太大,我们只取50000行
    nrows = 50000
    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", nrows=nrows)
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", nrows=nrows)
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", nrows=nrows)
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", nrows=nrows)
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # 合并数据集
    train_df = pd.merge(train_transaction, train_identity, on='TransactionID', how='left')
    test_df = pd.merge(test_transaction, test_identity, on='TransactionID', how='left')
    # print(train_df.head())
    # print(test_df.head())
    plt.hist(train_df['TransactionDT'])
    plt.hist(test_df['TransactionDT'])
    plt.legend(['train', 'test'])
    plt.show()

运行结果

通过该图我们可以看到,训练数据集的时间是先于测试数据集的。表明它是带有时序信息的预测。一般带有时序信息的预测,数据集很有可能发生标签偏移的情况,导致预测不准。由于数据集中有缺失值,我们可以来看一下缺失值的相关性。

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import missingno as msno

if __name__ == "__main__":

    # 数据量太大,我们只取50000行
    nrows = 50000
    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", nrows=nrows)
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", nrows=nrows)
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", nrows=nrows)
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", nrows=nrows)
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # 合并数据集
    train_df = pd.merge(train_transaction, train_identity, on='TransactionID', how='left')
    test_df = pd.merge(test_transaction, test_identity, on='TransactionID', how='left')
    # print(train_df.head())
    # print(test_df.head())
    # plt.hist(train_df['TransactionDT'])
    # plt.hist(test_df['TransactionDT'])
    # plt.legend(['train', 'test'])
    # plt.show()
    # 查看缺失值相关性
    msno.heatmap(train_df.iloc[:, 2:], labels=False)
    plt.show()

运行结果

这个图的意思是一个特征的存在或不存在如何强烈影响的另一个的存在:数值为1=两个特征一个缺失另一个必缺失;数值为-1=一个特征缺失另一个特征必然不缺失。这里颜色越深,表示相关性越强。这里我们可以看到特征是分批次的,做特征工程的时候也可以一批一批做。我们也可以直接算特征相关性。

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import missingno as msno

if __name__ == "__main__":

    # 数据量太大,我们只取50000行
    nrows = 50000
    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", nrows=nrows)
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", nrows=nrows)
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", nrows=nrows)
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", nrows=nrows)
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # 合并数据集
    train_df = pd.merge(train_transaction, train_identity, on='TransactionID', how='left')
    test_df = pd.merge(test_transaction, test_identity, on='TransactionID', how='left')
    # print(train_df.head())
    # print(test_df.head())
    # plt.hist(train_df['TransactionDT'])
    # plt.hist(test_df['TransactionDT'])
    # plt.legend(['train', 'test'])
    # plt.show()
    # 查看缺失值相关性
    # msno.heatmap(train_df.iloc[:, 2:], labels=False)
    # plt.show()
    # 查看1000个样本特征相关性(含标签)
    print(train_df.iloc[: 1000, 1:].corr())
    # 画出剔除空值的跟标签相关的特征相关性柱状图
    train_df.iloc[: 1000, 1:].corr().iloc[0].dropna().plot(kind='bar')
    plt.show()

运行结果

                 isFraud  TransactionDT  TransactionAmt     card1     card2     card3     card5     addr1     addr2     dist1     dist2        C1        C2        C3        C4        C5        C6        C7        C8        C9       C10       C11       C12       C13       C14        D1        D2        D3        D4        D5        D6        D7        D8        D9       D10       D11       D12       D13       D14       D15  V1        V2        V3        V4        V5        V6        V7        V8        V9       V10       V11       V12       V13       V14       V15       V16       V17       V18       V19       V20       V21       V22       V23       V24       V25       V26  V27  V28       V29       V30       V31       V32       V33       V34       V35       V36       V37       V38       V39       V40  V41       V42       V43       V44       V45       V46       V47       V48       V49       V50       V51       V52       V53       V54       V55       V56       V57       V58       V59  \
isFraud         1.000000       0.013782       -0.005908  0.004972  0.006852  0.127670 -0.012959  0.071439 -0.004495       NaN -0.087769  0.001663 -0.002670 -0.009588  0.117754 -0.025672 -0.018331  0.009062  0.271650 -0.020328  0.173451 -0.000212  0.048207 -0.019418 -0.022481 -0.035273 -0.055127  0.021205 -0.034704 -0.020458 -0.045892 -0.063313 -0.148796 -0.017063 -0.040719       NaN -0.039361 -0.072736  0.321835 -0.037751 NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN -0.049931 -0.054698  0.003893  0.157509  0.157509  0.165991  0.165991  0.040248  0.045891  0.165991  0.165991  0.171624  0.118178 -0.008275 -0.011934  NaN  NaN -0.095322 -0.088874  0.155386  0.155386  0.157509  0.157509 -0.064364 -0.068087 -0.028791  0.031704  0.150056  0.221994  NaN  0.150056  0.212723  0.089190  0.083110 -0.022531 -0.024948 -0.096192 -0.094905  0.151498  0.135814  0.135814 -0.064556 -0.067745 -0.019849  0.049177  0.129572  0.129572  0.147744   
TransactionDT   0.013782       1.000000       -0.032546 -0.051508 -0.076063  0.083668 -0.025698  0.017829  0.025681 -0.043524 -0.068128  0.014639  0.020514  0.003084  0.027700  0.021260  0.008657  0.019359  0.014414  0.009943 -0.017010  0.009834  0.051911  0.032522  0.009482  0.071891  0.022584  0.040992  0.000060  0.049157 -0.090304  0.164047 -0.113132  0.984102  0.029461  0.060561  0.014037 -0.057955  0.007574  0.062429 NaN -0.071072 -0.062840 -0.149004 -0.097539 -0.089522 -0.055288 -0.073905 -0.078522  0.014996 -0.002246 -0.029837 -0.025103 -0.020229  0.061159  0.061159  0.050131  0.050131 -0.118937 -0.053957  0.050131  0.050131 -0.069070 -0.085057 -0.025147  0.000754  NaN  NaN -0.036751 -0.029634  0.056601  0.056601  0.061159  0.061159 -0.043785 -0.047386 -0.031913  0.023526  0.084302  0.088880  NaN  0.084403  0.097107 -0.005636 -0.022159  0.023490 -0.003420 -0.064474 -0.071990  0.089172  0.082372  0.082372 -0.031509 -0.049933 -0.020528  0.026768  0.077105  0.077105  0.052619   
TransactionAmt -0.005908      -0.032546        1.000000 -0.063816 -0.035525 -0.142194  0.027991  0.050953 -0.015666  0.002820 -0.027742 -0.038344 -0.045257 -0.027390 -0.060633 -0.026648 -0.038739 -0.050460 -0.077543 -0.031288 -0.059908 -0.037795 -0.105496 -0.042403 -0.039064 -0.036750 -0.023226 -0.019887 -0.069418 -0.074241 -0.104369  0.010544  0.455651 -0.129649 -0.059254 -0.124085 -0.060605 -0.266990  0.065289 -0.067549 NaN -0.031021 -0.041358  0.056010  0.040011  0.009584  0.002718  0.019898  0.019181  0.153888  0.128506  0.106126  0.088991  0.007774 -0.171542 -0.171542 -0.158240 -0.158240  0.037656  0.034430 -0.158240 -0.158240 -0.030496 -0.029814 -0.001399 -0.013169  NaN  NaN  0.174010  0.144443 -0.173908 -0.173908 -0.171542 -0.171542  0.103420  0.095699 -0.051171 -0.058150 -0.173117 -0.170854  NaN -0.173330 -0.169847 -0.028347 -0.030559  0.015157  0.004900  0.198849  0.185778 -0.188834 -0.182713 -0.182713  0.114946  0.106208 -0.044804 -0.054086 -0.165935 -0.165935 -0.157455   
card1           0.004972      -0.051508       -0.063816  1.000000  0.061137  0.038342 -0.094837 -0.021980 -0.032430 -0.038772 -0.077167 -0.010469  0.005015 -0.062600  0.055576 -0.009926  0.003592  0.065434  0.038413 -0.013565  0.025601 -0.005501  0.070365 -0.021690 -0.016754  0.038848  0.083523 -0.020082  0.015188 -0.017723  0.030039  0.040194 -0.118325 -0.037427 -0.006851  0.040113  0.053797  0.045193  0.031152 -0.022654 NaN -0.102569 -0.104703 -0.017767 -0.042837 -0.106461 -0.087527 -0.085338 -0.109108  0.092428  0.091281 -0.014918  0.012183  0.040574  0.024923  0.024923  0.030549  0.030549 -0.008833 -0.002415  0.030549  0.030549 -0.003859  0.046100 -0.005920  0.001521  NaN  NaN  0.011108 -0.001648  0.031481  0.031481  0.024923  0.024923 -0.017754 -0.023489  0.015703 -0.028546  0.027353  0.020520  NaN  0.026962  0.006697  0.026296  0.024367  0.035346  0.024036  0.010046  0.015715  0.025177  0.017934  0.017934 -0.039845 -0.023949 -0.022932 -0.043481  0.008533  0.008533  0.001124   
card2           0.006852      -0.076063       -0.035525  0.061137  1.000000  0.072102  0.009044  0.058504  0.043226 -0.004402  0.055980 -0.005927 -0.008810  0.005680 -0.003184 -0.009516 -0.008797 -0.008569  0.025654 -0.007970  0.003027 -0.004288  0.039580 -0.017875 -0.008660  0.029353  0.082961  0.066494 -0.030025 -0.040714  0.013969 -0.084588  0.066148  0.026099 -0.019266 -0.054301 -0.038406 -0.061330  0.095463 -0.031832 NaN  0.016955  0.004486  0.060333  0.036280 -0.047463 -0.113096 -0.064533 -0.064533 -0.002705  0.021173 -0.028998 -0.062818  0.025994  0.121465  0.121465  0.062904  0.062904  0.047928  0.013281  0.062904  0.062904  0.022380 -0.020278  0.076031  0.064234  NaN  NaN -0.041650 -0.019071  0.119183  0.119183  0.121465  0.121465 -0.006568 -0.004500  0.046317  0.039571  0.067373  0.070926  NaN  0.063688  0.059978 -0.051023 -0.040544 -0.042609 -0.031776 -0.087024 -0.076842  0.124721  0.124571  0.124571 -0.083539 -0.086081  0.063528  0.039494  0.115868  0.115868  0.076783   
...                  ...            ...             ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...  ..       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...  ...  ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...  ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...   
id_22                NaN            NaN             NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   
id_24                NaN            NaN             NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   
id_25                NaN            NaN             NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   
id_26                NaN      -1.000000        1.000000 -1.000000 -1.000000       NaN       NaN -1.000000       NaN       NaN       NaN       NaN -1.000000       NaN -1.000000       NaN       NaN       NaN -1.000000       NaN -1.000000 -1.000000       NaN -1.000000       NaN -1.000000       NaN       NaN       NaN       NaN       NaN       NaN -1.000000       NaN       NaN       NaN       NaN       NaN       NaN       NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   
id_32           0.075326      -0.027536       -0.225587  0.143405 -0.213976  0.077271 -0.035045  0.060889 -0.123548       NaN -0.165049  0.135864  0.131647 -0.146343  0.122662       NaN  0.188332       NaN  0.156028       NaN  0.170617  0.126650       NaN  0.124538  0.159206 -0.008424 -0.010182       NaN -0.346410       NaN  0.084489 -0.622400 -0.412544 -0.051376  0.221617       NaN       NaN -0.878566 -0.644651  0.107940 NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  0.254824       NaN       NaN  0.414039  0.414039  0.097590  0.097590  0.414039  0.414039  0.414039  0.414039  0.254824  0.254824  NaN  NaN       NaN       NaN -0.097590 -0.097590       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN -0.346410       NaN       NaN       NaN       NaN  0.301511  0.301511       NaN       NaN  0.301511   

                     V60       V61       V62       V63       V64       V65       V66       V67  V68       V69       V70       V71       V72       V73       V74       V75       V76       V77       V78       V79       V80       V81       V82       V83       V84       V85       V86       V87       V88  V89       V90       V91       V92       V93       V94       V95       V96       V97       V98       V99      V100      V101      V102      V103      V104      V105      V106  V107  V108      V109      V110  V111  V112  V113      V114      V115      V116  V117  V118  V119      V120      V121      V122      V123      V124      V125      V126      V127      V128      V129      V130      V131      V132      V133      V134      V135      V136      V137      V138      V139      V140      V141      V142      V143      V144      V145      V146      V147      V148      V149      V150      V151      V152      V153      V154      V155      V156      V157      V158      V159      V160      V161  \
isFraud         0.192665  0.031135  0.046132  0.145911  0.180927  0.003714 -0.011386 -0.014115  NaN -0.091959 -0.086690  0.129016  0.129016  0.128185  0.128185 -0.082461 -0.086571 -0.021989  0.027069  0.142442  0.152059  0.187148  0.036673  0.049061  0.152059  0.176003  0.094566  0.072461  0.005470  NaN -0.097007 -0.091351  0.138404  0.136985  0.157756  0.052349 -0.016400 -0.003042 -0.023189 -0.035679 -0.019357  0.046922 -0.009651 -0.003516  0.052318  0.008409  0.045079   NaN   NaN -0.009588 -0.006769   NaN   NaN   NaN  0.362762  0.152964  0.224528   NaN   NaN   NaN  0.362762  0.362762  0.362762  0.286695  0.132476  0.247119 -0.012504 -0.020727 -0.016502 -0.009239 -0.028908 -0.011894 -0.005394 -0.012822 -0.011063 -0.011201 -0.016551 -0.012225 -0.018857  0.174711  0.167921 -0.023171 -0.020119 -0.127075 -0.143369 -0.155066  0.122328  0.122328  0.103068  0.103068 -0.156298 -0.151638 -0.152797  0.103068  0.103068  0.250221  0.250221  0.227718  0.221142 -0.156548 -0.156544 -0.015329   
TransactionDT   0.052199 -0.066666 -0.033464  0.057258  0.063085 -0.020208  0.075290  0.048872  NaN -0.007086 -0.012282  0.073961  0.073961  0.079038  0.079038 -0.060279 -0.055467 -0.038064 -0.024458  0.068587  0.036903  0.033297 -0.071109 -0.029335  0.037007  0.038584 -0.028513 -0.056993 -0.000279  NaN -0.013819 -0.019797  0.058763  0.054817  0.062334  0.054682  0.120112  0.096054 -0.021303  0.086523  0.019013  0.075518  0.122597  0.109309 -0.004771  0.051117 -0.011354   NaN   NaN -0.044573 -0.055354   NaN   NaN   NaN  0.037207 -0.002292 -0.019353   NaN   NaN   NaN  0.037207  0.037207  0.037207 -0.012358 -0.050755 -0.038579  0.052026  0.070787  0.041678 -0.036289  0.021775 -0.047596  0.116828  0.083364  0.097287 -0.017828  0.024500 -0.023576  0.066998  0.078789  0.074494  0.047562  0.017147  0.135573 -0.043751 -0.081066  0.011294  0.011294  0.101082  0.101082 -0.088696 -0.090289 -0.094712  0.101082  0.101082  0.128033  0.128033  0.140409  0.135734 -0.075390 -0.086333 -0.025235   
TransactionAmt -0.155558  0.066987  0.072151 -0.157119 -0.154584  0.007810 -0.030780 -0.035670  NaN  0.175858  0.151183 -0.166678 -0.166678 -0.164847 -0.164847  0.120807  0.103305 -0.047781 -0.061164 -0.164126 -0.161307 -0.159240  0.064802  0.056609 -0.161507 -0.157684 -0.047399 -0.042975  0.015427  NaN  0.180686  0.154343 -0.169202 -0.168919 -0.169111  0.014856  0.013960  0.017210  0.016591 -0.026711 -0.003957  0.015344  0.025622  0.022312 -0.009047  0.025512 -0.012699   NaN   NaN -0.004773 -0.013144   NaN   NaN   NaN -0.019738 -0.019257 -0.022694   NaN   NaN   NaN -0.019738 -0.019738 -0.019738 -0.030571 -0.034623 -0.032237  0.213909  0.109239  0.151272  0.234003  0.189802  0.191128  0.057739  0.051520  0.051723  0.064138  0.075906  0.061938  0.255629  0.201188  0.189062  0.187097  0.074219 -0.138025 -0.127005 -0.129111  0.078352  0.078352  0.222012  0.222012 -0.128495 -0.127166 -0.127182  0.222012  0.222012  0.190102  0.190102  0.161473  0.152733 -0.128282 -0.128619  0.382033   
card1           0.005579 -0.035114 -0.045401  0.003489 -0.005004  0.040455 -0.028037 -0.014123  NaN  0.004803 -0.008729  0.003910  0.003910  0.016953  0.016953  0.007045  0.023276 -0.029845 -0.048443  0.005545  0.013260  0.013603 -0.054161 -0.043827  0.016525  0.002785  0.016395  0.033534 -0.002764  NaN  0.003976 -0.007208  0.008487  0.005948  0.024462 -0.051933  0.029147  0.031950 -0.015317  0.017187  0.032550 -0.022716  0.032111  0.035357 -0.070807  0.003586 -0.055241   NaN   NaN -0.056313 -0.023967   NaN   NaN   NaN -0.009611 -0.053376 -0.024671   NaN   NaN   NaN -0.009611 -0.009611 -0.009611  0.006158 -0.035934  0.004314 -0.047086 -0.008058 -0.010742 -0.032114 -0.017770 -0.006330 -0.022857 -0.004281 -0.007237 -0.042497  0.013195 -0.012551 -0.034917 -0.168909 -0.145096  0.032616  0.080780  0.065897  0.071053  0.075559 -0.138372 -0.138372 -0.166667 -0.166667  0.074858  0.072293  0.073392 -0.166667 -0.166667 -0.158586 -0.158586 -0.177791 -0.159294  0.077260  0.074586 -0.073776   
card2           0.075679  0.071205  0.039669  0.076285  0.067232  0.026169  0.009615  0.009654  NaN -0.046396 -0.023296  0.122742  0.122742  0.111261  0.111261 -0.001038 -0.035317  0.095380  0.090668  0.106704  0.073026  0.068015  0.028210 -0.004650  0.073536  0.064902  0.035175  0.020563  0.038712  NaN -0.050233 -0.018401  0.106936  0.106752  0.121904 -0.066524 -0.109100 -0.089710 -0.010068 -0.063489 -0.040754 -0.079203 -0.113217 -0.097043  0.009664 -0.080473  0.012925   NaN   NaN -0.019461 -0.028665   NaN   NaN   NaN -0.000913 -0.018207 -0.022805   NaN   NaN   NaN -0.000913 -0.000913 -0.000913 -0.064943 -0.080942 -0.076812 -0.053885 -0.091941 -0.058774 -0.004987 -0.050514  0.004756 -0.088740 -0.099933 -0.092686  0.048020 -0.015261  0.039296  0.009529  0.010374 -0.010530 -0.056496 -0.096430  0.024535  0.030240  0.013162  0.076272  0.076272 -0.039623 -0.039623  0.010779  0.010944  0.011124 -0.039623 -0.039623 -0.041652 -0.041652 -0.017467 -0.032714  0.013072  0.010985  0.000745   
...                  ...       ...       ...       ...       ...       ...       ...       ...  ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...  ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...   ...   ...       ...       ...   ...   ...   ...       ...       ...       ...   ...   ...   ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...   
id_22                NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN   NaN       NaN       NaN   NaN   NaN   NaN       NaN       NaN       NaN   NaN   NaN   NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   
id_24                NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN   NaN       NaN       NaN   NaN   NaN   NaN       NaN       NaN       NaN   NaN   NaN   NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   
id_25                NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN   NaN       NaN       NaN   NaN   NaN   NaN       NaN       NaN       NaN   NaN   NaN   NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   
id_26                NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN   NaN       NaN       NaN   NaN   NaN   NaN       NaN       NaN       NaN   NaN   NaN   NaN       NaN       NaN       NaN       NaN  1.000000       NaN       NaN  1.000000       NaN       NaN  1.000000       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  1.000000  1.000000       NaN       NaN       NaN       NaN -1.000000       NaN       NaN  1.000000  1.000000 -1.000000       NaN       NaN  1.000000  1.000000  1.000000  1.000000  1.000000  1.000000 -1.000000 -1.000000       NaN   
id_32           0.301511  0.192450  0.192450  0.301511  0.301511  0.301511  0.301511  0.301511  NaN       NaN       NaN  0.192450  0.192450       NaN       NaN       NaN       NaN  0.039528  0.153574       NaN  0.153574  0.237171 -0.025482 -0.025482  0.000000 -0.018898  0.000000  0.000000  0.039528  NaN       NaN       NaN  0.025482  0.103807       NaN  0.059559 -0.010680  0.064221  0.041093 -0.022126  0.039160  0.103163  0.103163  0.103163  0.013850  0.012248  0.013850   NaN   NaN  0.078424  0.078424   NaN   NaN   NaN  0.111285  0.136762  0.136762   NaN   NaN   NaN  0.111285  0.111285  0.111285 -0.009634  0.058336  0.021311 -0.042190 -0.003846 -0.037949 -0.017886  0.060210  0.026581  0.113698  0.113698  0.113698 -0.059698 -0.056412 -0.059698 -0.122257 -0.049234 -0.033318 -0.054576  0.019065  0.071853  0.073371  0.076797  0.000183  0.000183 -0.082017 -0.082017  0.076004  0.075092  0.075574 -0.082017 -0.082017 -0.053208 -0.053208 -0.087087 -0.074102  0.074940  0.076005 -0.089559   

                    V162      V163      V164      V165      V166      V167      V168      V169      V170      V171      V172      V173      V174      V175      V176      V177      V178      V179      V180      V181      V182      V183      V184      V185      V186      V187      V188      V189      V190      V191      V192      V193      V194      V195      V196      V197      V198      V199      V200      V201      V202      V203      V204      V205      V206      V207      V208      V209      V210      V211      V212      V213      V214      V215      V216      V217      V218      V219      V220      V221      V222      V223      V224      V225      V226      V227      V228      V229      V230      V231      V232      V233      V234      V235      V236      V237      V238      V239      V240  V241      V242      V243      V244      V245      V246      V247      V248      V249      V250      V251      V252      V253      V254      V255      V256      V257      V258      V259  \
isFraud        -0.016267 -0.016267 -0.121266 -0.152661 -0.145263  0.132926  0.079900 -0.016974  0.132617  0.106906 -0.008288  0.002505 -0.012842 -0.016287  0.039292  0.187478  0.032461  0.082127  0.047839  0.083284  0.065863  0.073954  0.083284  0.083284  0.200785  0.148167  0.170240  0.170240  0.272462  0.234670  0.222198  0.234670  0.198301  0.198301  0.370067  0.294661  0.294661  0.378018  0.328466  0.328466  0.102640  0.082034  0.094737 -0.029599 -0.025920 -0.032757 -0.034679 -0.040874 -0.035631  0.165940  0.119531  0.126216  0.092333  0.090825  0.091745  0.118673  0.027380  0.020863  0.053283  0.087698  0.130724 -0.012885 -0.012687 -0.013657  0.101808 -0.010566  0.030501  0.017608  0.007551  0.187964  0.065167  0.041180  0.118423  0.082088  0.124662  0.084855  0.143987  0.176639 -0.017948   NaN  0.092972  0.018657  0.092972 -0.025179  0.154062  0.119795  0.008879  0.026128 -0.062321 -0.062321  0.181462  0.005258  0.027790 -0.062321 -0.065286  0.242426  0.034984  0.161685   
TransactionDT  -0.026047 -0.026047  0.039396 -0.087987 -0.071390 -0.014212  0.032148 -0.013214 -0.008059  0.066731 -0.027516  0.005132 -0.048432  0.018447  0.032208  0.033655  0.083992  0.098383 -0.057364 -0.030073 -0.042821 -0.051493 -0.030073 -0.030073  0.019809  0.023046  0.000936  0.000936  0.053637  0.002061  0.023261  0.002061 -0.015159 -0.015159  0.070832  0.032378  0.032378  0.021518  0.005030  0.005030 -0.075191 -0.066214 -0.061308 -0.022570  0.001767 -0.020882 -0.038110 -0.026874 -0.023218  0.029843  0.065157  0.058398 -0.121094 -0.119806 -0.123895 -0.032783 -0.043141 -0.042524 -0.025693  0.014474 -0.003082 -0.056817 -0.048689 -0.047869 -0.024430 -0.040081  0.005152 -0.035629 -0.028585  0.035672 -0.036646 -0.024284 -0.030805 -0.028911 -0.025436 -0.041995  0.015448  0.011776 -0.000421   NaN -0.029288 -0.042086 -0.029288  0.030246 -0.004123 -0.034964 -0.045728 -0.043776  0.022016  0.022016 -0.000581 -0.042488 -0.040010  0.043579  0.015046 -0.019568 -0.041744  0.008104   
TransactionAmt  0.376228  0.376228 -0.130458 -0.128165 -0.104077  0.097049  0.024231  0.059928  0.149359  0.108957  0.019032  0.033287  0.027230  0.005613  0.039407  0.020068 -0.090730 -0.022146  0.057197  0.135218  0.091416  0.111992  0.135218  0.135218  0.102662  0.033397  0.187932  0.187932  0.055603  0.117883  0.113827  0.117883  0.218030  0.218030  0.053158  0.171567  0.171567  0.023534  0.123229  0.123229  0.460369  0.398969  0.440557  0.325588  0.339621  0.314696  0.311754  0.254218  0.304161  0.088825  0.047618  0.061200  0.489050  0.483766  0.486988  0.165321  0.195146  0.204935  0.032838  0.072915  0.056902  0.158129  0.194471  0.199449  0.167142  0.003285  0.122812  0.191558  0.194597  0.017020  0.172577  0.168804  0.205801  0.124046  0.197037  0.221426  0.061101  0.063451 -0.044126   NaN  0.210941  0.198686  0.210941  0.056809  0.180430  0.222730  0.205040  0.212265  0.070365  0.070365  0.191398  0.196668  0.196676  0.052047  0.038799  0.153242  0.193886  0.032795   
card1          -0.064922 -0.064922  0.069642  0.076943  0.062509  0.002128 -0.011954  0.039159 -0.058844 -0.061760  0.083274  0.045424  0.016184  0.051398  0.023841  0.058227  0.087594 -0.011103 -0.036904 -0.107484 -0.065460 -0.086211 -0.107484 -0.107484 -0.053072  0.029809 -0.099938 -0.099938 -0.054884 -0.043189 -0.027700 -0.043189 -0.104450 -0.104450 -0.070820 -0.121510 -0.121510 -0.064588 -0.110531 -0.110531 -0.073633 -0.059578 -0.079164 -0.005102 -0.027756 -0.000780 -0.023360  0.003629 -0.013914  0.012403 -0.002266 -0.014877 -0.119733 -0.113374 -0.117841  0.024219  0.064146  0.057343  0.050762 -0.064615 -0.096930  0.103705  0.076787  0.079672 -0.098995  0.083929  0.045377  0.067500  0.062280  0.058548  0.042504  0.046352  0.038425 -0.111547  0.036054 -0.002433 -0.100759 -0.107551 -0.029696   NaN  0.028657  0.057994  0.028657 -0.102932  0.019968  0.040010  0.064440  0.065736 -0.083920 -0.083920  0.028569  0.066721  0.058952 -0.098987 -0.136175  0.007259  0.057705 -0.107636   
card2          -0.007997 -0.007997  0.022410  0.012323  0.017698 -0.037352 -0.091531 -0.001230 -0.027019 -0.023460 -0.040341 -0.068184 -0.039323 -0.017967 -0.011281 -0.101951 -0.157497 -0.135936  0.023640  0.049160  0.043149  0.035708  0.049160  0.049160  0.041854 -0.038431  0.065887  0.065887  0.045964  0.021135 -0.009443  0.021135  0.092023  0.092023 -0.018047  0.062931  0.062931 -0.001996  0.043880  0.043880  0.005557 -0.032173 -0.015984 -0.030767 -0.043630 -0.031127 -0.049097 -0.024435 -0.044844 -0.048831 -0.117022 -0.091939  0.052434  0.052471  0.051112 -0.006428  0.047121  0.044009 -0.012708 -0.055342 -0.043943  0.015491  0.046876  0.045578  0.020844 -0.060129  0.022043  0.048464  0.049254 -0.103087  0.025156  0.015703  0.068053  0.054124  0.066656  0.066529  0.037080  0.042161  0.020262   NaN  0.080636  0.055115  0.080636 -0.043880  0.082443  0.062114  0.055047  0.058540 -0.086080 -0.086080  0.040944  0.050986  0.048005 -0.105570 -0.095279  0.049429  0.051105 -0.034273   
...                  ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...   ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...   
id_22                NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   
id_24                NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   
id_25                NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   
id_26                NaN       NaN       NaN       NaN       NaN -1.000000 -1.000000       NaN  1.000000  1.000000 -1.000000       NaN  1.000000  1.000000 -1.000000       NaN       NaN       NaN -1.000000       NaN -1.000000 -1.000000       NaN       NaN       NaN       NaN  1.000000  1.000000       NaN       NaN       NaN       NaN  1.000000  1.000000       NaN  1.000000  1.000000       NaN  1.000000  1.000000 -1.000000 -1.000000 -1.000000 -1.000000       NaN -1.000000  1.000000  1.000000  1.000000       NaN       NaN       NaN       NaN -1.000000 -1.000000       NaN  1.000000       NaN       NaN  1.000000  1.000000       NaN       NaN       NaN       NaN       NaN       NaN  1.000000       NaN       NaN  1.000000       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN       NaN       NaN       NaN  1.000000       NaN       NaN  1.000000       NaN  1.000000  1.000000       NaN  1.000000       NaN  1.000000  1.000000       NaN       NaN  1.000000   
id_32          -0.082717 -0.082717  0.069513  0.076175  0.065286 -0.019174  0.025898  0.041093 -0.005656  0.022424  0.075326  0.041093  0.167642  0.147703 -0.141947  0.058721  0.058721  0.058721  0.017617 -0.065176 -0.016878 -0.027790 -0.065176 -0.065176 -0.086156 -0.057051 -0.021683 -0.021683 -0.030772 -0.086156 -0.086156 -0.086156 -0.021683 -0.021683 -0.030772  0.020186  0.020186 -0.073831 -0.023338 -0.023338 -0.127544 -0.082768 -0.121202 -0.074772 -0.079570 -0.063368 -0.036738 -0.004769 -0.026496 -0.027496 -0.027496 -0.027496 -0.136041 -0.128465 -0.132520 -0.029536  0.057107 -0.009370 -0.005486  0.031057  0.038573  0.041093 -0.026409 -0.007812 -0.012615  0.041093 -0.168855  0.042480 -0.112454  0.058721  0.096079  0.058721  0.030910 -0.065176  0.049400 -0.028335  0.006853  0.006853       NaN   NaN -0.086156 -0.030617 -0.086156  0.038350 -0.030772 -0.086156 -0.057051 -0.086156  0.038350  0.038350 -0.030772  0.062691  0.031778  0.038350  0.038350 -0.073831 -0.028251 -0.032054   

                    V260      V261      V262      V263      V264      V265      V266      V267      V268      V269      V270      V271      V272      V273      V274      V275      V276      V277      V278      V279      V280      V281      V282      V283      V284      V285      V286      V287      V288      V289      V290      V291      V292      V293      V294      V295      V296      V297      V298      V299      V300      V301      V302      V303      V304  V305      V306      V307      V308      V309      V310      V311      V312      V313      V314      V315      V316      V317      V318      V319      V320      V321      V322      V323      V324      V325      V326      V327      V328      V329      V330      V331      V332      V333      V334      V335      V336      V337      V338      V339     id_01     id_02     id_03  id_04     id_05     id_06  id_07  id_08     id_09  id_10     id_11     id_13     id_14     id_17     id_18     id_19     id_20  id_21  id_22  id_24  id_25  \
isFraud         0.039719  0.075930  0.049500  0.089329 -0.008180 -0.008157 -0.027794 -0.013577 -0.014256 -0.017682 -0.026057 -0.027120 -0.027120  0.166357 -0.006876 -0.008609  0.092560 -0.000503  0.001814 -0.019149 -0.016429 -0.021754  0.011956  0.019198 -0.003650 -0.032013  0.012759  0.001887 -0.003645  0.004221 -0.008634  0.051980  0.010880 -0.012344 -0.018297 -0.017705  0.043623 -0.022437  0.047679 -0.024007  0.119279  0.116318  0.140677  0.225752  0.174301   NaN -0.021096 -0.026104 -0.024177 -0.010000 -0.034730 -0.007367 -0.014505 -0.016250 -0.020642 -0.017675 -0.014850 -0.017654 -0.018207 -0.011694 -0.012958 -0.012677  0.177241  0.015479  0.151308 -0.023171 -0.025113 -0.033759  0.125982  0.118854  0.125982 -0.025547 -0.039157 -0.027360 -0.019798 -0.035016 -0.031829 -0.026846 -0.027694 -0.026846 -0.019824 -0.013450 -0.045586    NaN  0.010467 -0.087728    NaN    NaN -0.061765    NaN -0.055156 -0.050621  0.029462  0.089251 -0.109615 -0.114428 -0.058701    NaN    NaN    NaN    NaN   
TransactionDT  -0.045081 -0.032300 -0.036597 -0.084858 -0.047104 -0.047940 -0.048534 -0.046078 -0.046147 -0.057225 -0.019787 -0.022482 -0.022482  0.031532 -0.044853 -0.044371 -0.118059 -0.054218 -0.059816  0.073246  0.118901 -0.019681 -0.051564  0.004705  0.000982  0.120671 -0.030328  0.061300  0.012386  0.035901  0.039180  0.092082  0.092544  0.076356  0.129843  0.124922  0.083304  0.045302  0.077974  0.029295 -0.014476 -0.021774 -0.013002 -0.007652 -0.011384   NaN  0.044283  0.093454  0.065334 -0.033054  0.053354 -0.027086 -0.033525 -0.045702 -0.034051 -0.037429  0.096486  0.098128  0.114233  0.000362  0.032638 -0.004173  0.007567 -0.007219 -0.025638  0.082990 -0.011792 -0.023322 -0.024012  0.012264 -0.024012 -0.087392 -0.088607 -0.094748  0.099547 -0.029103  0.007135 -0.086139 -0.074259 -0.086139 -0.122581  0.115080 -0.173837    NaN -0.068699  0.049163   -1.0   -1.0 -0.175552    NaN  0.041254 -0.116937  0.045280  0.219847  0.022870 -0.010024 -0.018653    NaN    NaN    NaN    NaN   
TransactionAmt  0.139130  0.175000  0.208745  0.491424  0.209867  0.216471  0.356812  0.207544  0.215902  0.368426  0.316906  0.313766  0.313766  0.084558  0.199600  0.199949  0.473578  0.238975  0.260510 -0.007556 -0.002918 -0.014248  0.020964  0.006647 -0.030277 -0.045079 -0.008578 -0.033482 -0.017052 -0.024300 -0.036184 -0.058542 -0.047413 -0.005656  0.004934  0.003423  0.033239  0.027990  0.039553  0.020835  0.016958  0.015400 -0.177761 -0.161611 -0.176872   NaN  0.301173  0.134832  0.210593  0.233300  0.191038  0.237473  0.188537  0.287538  0.194761  0.276103  0.057802  0.047786  0.050949  0.272703  0.258464  0.267889  0.010592 -0.106155 -0.042537 -0.074519 -0.114131 -0.138232  0.062553  0.038990  0.062553  0.309353  0.208381  0.301597 -0.047370 -0.135669 -0.109912  0.320007  0.315905  0.320007  0.023670 -0.059576 -0.032056    NaN -0.036862  0.018316    1.0    1.0 -0.037301    NaN -0.017874  0.028244 -0.021284 -0.258609 -0.326490  0.003092 -0.017335    NaN    NaN    NaN    NaN   
card1          -0.029603  0.063914  0.046749 -0.038595  0.067933  0.066481  0.049881  0.070441  0.069602  0.020087 -0.002060 -0.000051 -0.000051  0.012979  0.069290  0.069564 -0.119497  0.059763  0.053105 -0.070766  0.034804 -0.060514 -0.076358 -0.100681  0.006029  0.037814 -0.015732  0.035775 -0.078848 -0.069701 -0.027687  0.014990 -0.034333 -0.057664  0.044763  0.039331 -0.003883 -0.093289 -0.004142 -0.083860 -0.044484 -0.051869 -0.048860 -0.017294 -0.051823   NaN -0.078329 -0.002421 -0.018403 -0.036595  0.001723 -0.024834 -0.013175 -0.019969 -0.009449 -0.016869 -0.040012  0.002977  0.006054 -0.066198 -0.036210 -0.054041 -0.017405  0.064363 -0.000984  0.017570  0.067050  0.037830 -0.095926 -0.066572 -0.095926 -0.064070 -0.020263 -0.062208 -0.010027  0.060311  0.010110 -0.095085 -0.087757 -0.095085  0.004115  0.124039 -0.006002    NaN  0.091377  0.057274   -1.0   -1.0  0.058066    NaN  0.008453  0.051501 -0.100414  0.127530  0.305459 -0.035537  0.037060    NaN    NaN    NaN    NaN   
card2          -0.047963  0.026704  0.030407  0.025849  0.050306  0.050498  0.020135  0.048535  0.048242  0.045141 -0.032144 -0.036954 -0.036954 -0.049999  0.049257  0.049064  0.052197  0.055585  0.057197 -0.020505 -0.109478  0.051136  0.039205  0.036054  0.028608 -0.076410  0.040894 -0.053146 -0.004711  0.005309  0.041751  0.020323  0.007407 -0.050882 -0.128988 -0.120125 -0.050796  0.019462 -0.057837  0.017158  0.018794  0.013433  0.075939  0.070980  0.076288   NaN -0.046162 -0.084521 -0.049950  0.000046 -0.053874  0.002452  0.003735 -0.002169 -0.013226  0.003175 -0.080230 -0.090211 -0.077669  0.046463 -0.010420  0.038930 -0.022093  0.078433 -0.002409 -0.002884  0.082170  0.034800 -0.015575  0.009826 -0.015575 -0.038756 -0.020663 -0.037849 -0.011438  0.020064 -0.000099 -0.024421 -0.020864 -0.024421 -0.102796  0.027251 -0.186282    NaN  0.036905 -0.026113   -1.0   -1.0 -0.124319    NaN -0.028107  0.008499 -0.044426 -0.054521 -0.111218  0.082863 -0.118728    NaN    NaN    NaN    NaN   
...                  ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...   ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...       ...    ...       ...       ...    ...    ...       ...    ...       ...       ...       ...       ...       ...       ...       ...    ...    ...    ...    ...   
id_22                NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN    NaN       NaN       NaN    NaN    NaN       NaN    NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN    NaN    NaN    NaN    NaN   
id_24                NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN    NaN       NaN       NaN    NaN    NaN       NaN    NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN    NaN    NaN    NaN    NaN   
id_25                NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN    NaN       NaN       NaN    NaN    NaN       NaN    NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN    NaN    NaN    NaN    NaN   
id_26                NaN  1.000000       NaN       NaN  1.000000       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  1.000000       NaN       NaN       NaN       NaN -1.000000 -1.000000       NaN  1.000000  1.000000 -1.000000 -1.000000       NaN -1.000000       NaN       NaN -1.000000 -1.000000 -1.000000       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN -1.000000 -1.000000 -1.000000 -1.000000 -1.000000       NaN -1.000000       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  1.000000       NaN       NaN  1.000000       NaN       NaN       NaN       NaN -1.000000  1.000000       NaN    NaN  1.000000  1.000000    1.0    1.0       NaN    NaN       NaN -1.000000       NaN       NaN -1.000000       NaN  1.000000    NaN    NaN    NaN    NaN   
id_32          -0.106320  0.079675 -0.050454 -0.129170 -0.117389 -0.126829 -0.079570 -0.078890 -0.082130 -0.085216 -0.082961 -0.076135 -0.076135 -0.027496 -0.013154 -0.027496 -0.136041 -0.122902 -0.131393  0.021409  0.017987 -0.054576  0.035038  0.045628 -0.007812 -0.026928 -0.005486 -0.009964  0.028545  0.050589 -0.090949  0.095885 -0.046073  0.103163  0.103163  0.103163  0.084190 -0.013770  0.067772 -0.013770  0.038149  0.038149 -0.086156  0.060873 -0.086156   NaN -0.092359 -0.071595 -0.090454 -0.088626 -0.054124 -0.085216 -0.083590 -0.087097 -0.083803 -0.083803  0.113698  0.113698  0.113698 -0.094026 -0.084328 -0.094026  0.059559 -0.013655  0.051380  0.041093 -0.025253  0.013412  0.013850  0.012248  0.013850 -0.042190 -0.005374 -0.039678 -0.017886  0.057092  0.010147 -0.059698 -0.056412 -0.059698  0.020172  0.037984  0.081342    NaN  0.115401  0.013870    NaN    NaN  0.176030    NaN  0.294132 -0.388844  0.025977  0.122257  0.147190 -0.089783 -0.035688    NaN    NaN    NaN    NaN   

                id_26     id_32  
isFraud           NaN  0.075326  
TransactionDT    -1.0 -0.027536  
TransactionAmt    1.0 -0.225587  
card1            -1.0  0.143405  
card2            -1.0 -0.213976  
...               ...       ...  
id_22             NaN       NaN  
id_24             NaN       NaN  
id_25             NaN       NaN  
id_26             1.0       NaN  
id_32             NaN  1.000000  

[402 rows x 402 columns]

这里我们将跟标签相关的特征相关性图画了出来,我们可以看到,有很多的特征跟标签的相关性是大于0.2的,这表明这些特征跟标签是强相关的。现在我们来看一下产品编码的违约的概率均值。

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import missingno as msno

if __name__ == "__main__":

    # 数据量太大,我们只取50000行
    nrows = 50000
    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", nrows=nrows)
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", nrows=nrows)
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", nrows=nrows)
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", nrows=nrows)
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # 合并数据集
    train_df = pd.merge(train_transaction, train_identity, on='TransactionID', how='left')
    test_df = pd.merge(test_transaction, test_identity, on='TransactionID', how='left')
    # print(train_df.head())
    # print(test_df.head())
    # plt.hist(train_df['TransactionDT'])
    # plt.hist(test_df['TransactionDT'])
    # plt.legend(['train', 'test'])
    # plt.show()
    # 查看缺失值相关性
    # msno.heatmap(train_df.iloc[:, 2:], labels=False)
    # plt.show()
    # 查看1000个样本特征相关性(含标签)
    # print(train_df.iloc[: 1000, 1:].corr())
    # 画出剔除空值的跟标签相关的特征相关性柱状图
    # train_df.iloc[: 1000, 1:].corr().iloc[0].dropna().plot(kind='bar')
    # plt.show()
    # 查看不同的产品的违约概率
    plt.subplot(1, 2, 1)
    train_df.groupby(['ProductCD'])['isFraud'].count().plot(kind='bar')
    print(train_df.groupby(['ProductCD'])['isFraud'].mean())
    plt.subplot(1, 2, 2)
    train_df.groupby(['ProductCD'])['isFraud'].mean().plot()
    plt.show()

运行结果

ProductCD
C    0.100730
H    0.016376
R    0.022660
S    0.019809
W    0.019300
Name: isFraud, dtype: float64

左边的图为不同的产品的统计数量,右图为不同的产品的违约概率,这里我们可以看到产品为C的违约概率是最高的。我们进一步来看一下产品和银行卡card1的违约相关性。

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import missingno as msno

if __name__ == "__main__":

    # 数据量太大,我们只取50000行
    nrows = 50000
    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", nrows=nrows)
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", nrows=nrows)
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", nrows=nrows)
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", nrows=nrows)
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # 合并数据集
    train_df = pd.merge(train_transaction, train_identity, on='TransactionID', how='left')
    test_df = pd.merge(test_transaction, test_identity, on='TransactionID', how='left')
    # print(train_df.head())
    # print(test_df.head())
    # plt.hist(train_df['TransactionDT'])
    # plt.hist(test_df['TransactionDT'])
    # plt.legend(['train', 'test'])
    # plt.show()
    # 查看缺失值相关性
    # msno.heatmap(train_df.iloc[:, 2:], labels=False)
    # plt.show()
    # 查看1000个样本特征相关性(含标签)
    # print(train_df.iloc[: 1000, 1:].corr())
    # 画出剔除空值的跟标签相关的特征相关性柱状图
    # train_df.iloc[: 1000, 1:].corr().iloc[0].dropna().plot(kind='bar')
    # plt.show()
    # 查看不同的产品的违约概率
    # plt.subplot(1, 2, 1)
    # train_df.groupby(['ProductCD'])['isFraud'].count().plot(kind='bar')
    # print(train_df.groupby(['ProductCD'])['isFraud'].mean())
    # plt.subplot(1, 2, 2)
    # train_df.groupby(['ProductCD'])['isFraud'].mean().plot()
    # plt.show()
    # 查看不同产品的card1的违约相关性
    sns.violinplot(x='ProductCD', y='card1', data=train_df, hue='isFraud', split=True)
    plt.show()

运行结果

这里我们可以看到即使在产品为C的情况下,它的欺诈用户和正常用户的分布也是不一样的。这里也表明,这两个特征是强相关的。

我们再来看一下邮箱的欺诈概率值。

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import missingno as msno

if __name__ == "__main__":

    # 数据量太大,我们只取50000行
    nrows = 50000
    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", nrows=nrows)
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", nrows=nrows)
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", nrows=nrows)
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", nrows=nrows)
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # 合并数据集
    train_df = pd.merge(train_transaction, train_identity, on='TransactionID', how='left')
    test_df = pd.merge(test_transaction, test_identity, on='TransactionID', how='left')
    # print(train_df.head())
    # print(test_df.head())
    # plt.hist(train_df['TransactionDT'])
    # plt.hist(test_df['TransactionDT'])
    # plt.legend(['train', 'test'])
    # plt.show()
    # 查看缺失值相关性
    # msno.heatmap(train_df.iloc[:, 2:], labels=False)
    # plt.show()
    # 查看1000个样本特征相关性(含标签)
    # print(train_df.iloc[: 1000, 1:].corr())
    # 画出剔除空值的跟标签相关的特征相关性柱状图
    # train_df.iloc[: 1000, 1:].corr().iloc[0].dropna().plot(kind='bar')
    # plt.show()
    # 查看不同的产品的违约概率
    # plt.subplot(1, 2, 1)
    # train_df.groupby(['ProductCD'])['isFraud'].count().plot(kind='bar')
    # print(train_df.groupby(['ProductCD'])['isFraud'].mean())
    # plt.subplot(1, 2, 2)
    # train_df.groupby(['ProductCD'])['isFraud'].mean().plot()
    # plt.show()
    # 查看不同产品的card1的违约相关性
    # sns.violinplot(x='ProductCD', y='card1', data=train_df, hue='isFraud', split=True)
    # plt.show()
    # 查看邮箱的违约相关性
    df = train_df['P_emaildomain'].value_counts()
    print(df)
    print(train_df.groupby(['P_emaildomain'])['isFraud'].mean())
    df = df[df > 50]
    train_df.groupby(['P_emaildomain'])['isFraud'].mean().loc[df.index].plot(kind='bar')
    plt.show()

运行结果

gmail.com           17909
yahoo.com            8360
hotmail.com          3728
anonymous.com        3466
aol.com              2443
comcast.net           849
icloud.com            468
msn.com               387
outlook.com           360
att.net               326
sbcglobal.net         307
verizon.net           288
live.com              247
ymail.com             184
bellsouth.net         182
cox.net               157
charter.net           141
me.com                134
yahoo.com.mx          126
optonline.net         104
live.com.mx            71
rocketmail.com         59
earthlink.net          55
gmail                  41
roadrunner.com         38
mail.com               38
mac.com                37
juno.com               33
embarqmail.com         33
windstream.net         32
twc.com                30
web.de                 29
frontier.com           28
cfl.rr.com             24
netzero.com            24
frontiernet.net        24
outlook.es             23
prodigy.net.mx         23
aim.com                22
q.com                  20
hotmail.es             19
suddenlink.net         17
netzero.net            14
centurylink.net        13
yahoo.fr               13
hotmail.fr             12
ptd.net                12
gmx.de                 11
cableone.net            9
yahoo.es                9
yahoo.co.uk             8
sc.rr.com               6
servicios-ta.com        5
protonmail.com          4
yahoo.de                4
hotmail.co.uk           4
live.fr                 2
yahoo.co.jp             1
hotmail.de              1
Name: P_emaildomain, dtype: int64
P_emaildomain
aim.com             0.000000
anonymous.com       0.010675
aol.com             0.020467
att.net             0.018405
bellsouth.net       0.000000
cableone.net        0.000000
centurylink.net     0.000000
cfl.rr.com          0.000000
charter.net         0.007092
comcast.net         0.005889
cox.net             0.006369
earthlink.net       0.000000
embarqmail.com      0.000000
frontier.com        0.000000
frontiernet.net     0.208333
gmail               0.024390
gmail.com           0.035625
gmx.de              0.000000
hotmail.co.uk       0.000000
hotmail.com         0.055258
hotmail.de          0.000000
hotmail.es          0.000000
hotmail.fr          0.000000
icloud.com          0.053419
juno.com            0.000000
live.com            0.016194
live.com.mx         0.000000
live.fr             0.000000
mac.com             0.000000
mail.com            0.052632
me.com              0.029851
msn.com             0.015504
netzero.com         0.000000
netzero.net         0.000000
optonline.net       0.000000
outlook.com         0.080556
outlook.es          0.000000
prodigy.net.mx      0.000000
protonmail.com      0.000000
ptd.net             0.000000
q.com               0.000000
roadrunner.com      0.000000
rocketmail.com      0.000000
sbcglobal.net       0.003257
sc.rr.com           0.000000
servicios-ta.com    0.000000
suddenlink.net      0.000000
twc.com             0.000000
verizon.net         0.003472
web.de              0.000000
windstream.net      0.000000
yahoo.co.jp         0.000000
yahoo.co.uk         0.000000
yahoo.com           0.014474
yahoo.com.mx        0.000000
yahoo.de            0.000000
yahoo.es            0.000000
yahoo.fr            0.000000
ymail.com           0.021739
Name: isFraud, dtype: float64

这里我们查看的是比较高频的邮箱来进行统计。这里我们可以看到域名为outlook.com的欺诈概率最高。

这个数据集其实还有很多字段都可以通过这种方法来进行分析,而且这个数据集拥有的类型也是非常多的,可以通过字段的取值情况为后续编码提供依据。

现在我们就对原始数据集进行特征工程的处理

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
from tqdm import tqdm_notebook
from sklearn.metrics import roc_auc_score
from sklearn.preprocessing import LabelEncoder
import gc
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')

if __name__ == "__main__":

    def reduce_mem_usage(df):
        # 根据pandas列内容来选择合适的列类型
        start_mem = df.memory_usage().sum() / 1024**2
        print("Memory usage of dataframe is {:.2f} MB".format(start_mem))
        for col in df.columns:
            col_type = df[col].dtype
            if col_type != object:
                c_min = df[col].min()
                c_max = df[col].max()
                # 进行数值类型的内存压缩
                if str(col_type)[: 3] == 'int':
                    if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:
                        df[col] = df[col].astype(np.int8)
                    elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:
                        df[col] = df[col].astype(np.int16)
                    elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:
                        df[col] = df[col].astype(np.int32)
                    elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:
                        df[col] = df[col].astype(np.int64)
                else:
                    if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:
                        df[col] = df[col].astype(np.float16)
                    elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:
                        df[col] = df[col].astype(np.float32)
                    else:
                        df[col] = df[col].astype(np.float64)
            else:
                df[col] = df[col].astype('category')
        end_men = df.memory_usage().sum() / 1024**2
        print("Memory usage after optimization is {:.2f} MB".format(end_men))
        print("Decreased by {:.1f}".format(100 * (start_mem - end_men) / start_mem))
        return df

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", index_col='TransactionID')
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", index_col='TransactionID')
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", index_col='TransactionID')
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", index_col='TransactionID')
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    print(train_identity.select_dtypes(include=['object']))
    print(test_identity.select_dtypes(include=['object']))

运行结果

                  id_12  id_15     id_16 id_23 id_27  id_28     id_29             id_30                    id_31      id_33           id_34 id_35 id_36 id_37 id_38 DeviceType                          DeviceInfo
TransactionID                                                                                                                                                                                                     
2987004        NotFound    New  NotFound   NaN   NaN    New  NotFound       Android 7.0      samsung browser 6.2  2220x1080  match_status:2     T     F     T     T     mobile       SAMSUNG SM-G892A Build/NRD90M
2987008        NotFound    New  NotFound   NaN   NaN    New  NotFound        iOS 11.1.2       mobile safari 11.0   1334x750  match_status:1     T     F     F     T     mobile                          iOS Device
2987010        NotFound  Found     Found   NaN   NaN  Found     Found               NaN              chrome 62.0        NaN             NaN     F     F     T     T    desktop                             Windows
2987011        NotFound    New  NotFound   NaN   NaN    New  NotFound               NaN              chrome 62.0        NaN             NaN     F     F     T     T    desktop                                 NaN
2987016        NotFound  Found     Found   NaN   NaN  Found     Found  Mac OS X 10_11_6              chrome 62.0   1280x800  match_status:2     T     F     T     T    desktop                               MacOS
...                 ...    ...       ...   ...   ...    ...       ...               ...                      ...        ...             ...   ...   ...   ...   ...        ...                                 ...
3577521        NotFound  Found     Found   NaN   NaN  Found     Found               NaN  chrome 66.0 for android        NaN             NaN     F     F     T     F     mobile             F3111 Build/33.3.A.1.97
3577526        NotFound    New  NotFound   NaN   NaN    New  NotFound     Android 7.1.1  chrome 55.0 for android    855x480  match_status:2     T     F     T     F     mobile                 A574BL Build/NMF26F
3577529        NotFound    New  NotFound   NaN   NaN    New  NotFound               NaN  chrome 65.0 for android        NaN             NaN     F     F     T     F     mobile  Moto E (4) Plus Build/NMA26.42-152
3577531        NotFound  Found     Found   NaN   NaN  Found     Found   Mac OS X 10_9_5              chrome 66.0  2560x1600  match_status:2     T     F     T     F    desktop                               MacOS
3577534        NotFound    New  NotFound   NaN   NaN    New  NotFound               NaN  chrome 66.0 for android        NaN             NaN     F     F     T     F     mobile         RNE-L03 Build/HUAWEIRNE-L03

[144233 rows x 17 columns]
                  id-12  id-15     id-16 id-23 id-27  id-28     id-29          id-30                    id-31     id-33           id-34 id-35 id-36 id-37 id-38 DeviceType                   DeviceInfo
TransactionID                                                                                                                                                                                          
3663586        NotFound    New  NotFound   NaN   NaN    New  NotFound            NaN  chrome 67.0 for android       NaN             NaN     F     F     T     F     mobile  MYA-L13 Build/HUAWEIMYA-L13
3663588           Found  Found     Found   NaN   NaN  Found     Found  Android 6.0.1  chrome 67.0 for android  1280x720  match_status:2     T     F     T     T     mobile         LGLS676 Build/MXB48T
3663597        NotFound    New  NotFound   NaN   NaN    New  NotFound            NaN       ie 11.0 for tablet       NaN             NaN     F     T     T     F    desktop                  Trident/7.0
3663601        NotFound  Found     Found   NaN   NaN  Found     Found            NaN  chrome 67.0 for android       NaN             NaN     F     F     T     F     mobile  MYA-L13 Build/HUAWEIMYA-L13
3663602        NotFound    New  NotFound   NaN   NaN    New  NotFound            NaN  chrome 67.0 for android       NaN             NaN     F     F     T     F     mobile         SM-G9650 Build/R16NW
...                 ...    ...       ...   ...   ...    ...       ...            ...                      ...       ...             ...   ...   ...   ...   ...        ...                          ...
4170230        NotFound    New  NotFound   NaN   NaN    New  NotFound            NaN  chrome 71.0 for android       NaN             NaN     F     F     T     F     mobile                     SM-J700M
4170233        NotFound  Found     Found   NaN   NaN  Found     Found            NaN  chrome 71.0 for android       NaN             NaN     F     F     T     F     mobile                     SM-J320M
4170234        NotFound    New  NotFound   NaN   NaN    New  NotFound     iOS 10.3.3       mobile safari 10.0  1334x750  match_status:2     T     F     F     T     mobile                   iOS Device
4170236        NotFound    New  NotFound   NaN   NaN    New  NotFound            NaN  chrome 43.0 for android       NaN             NaN     F     F     T     F     mobile  ALE-L23 Build/HuaweiALE-L23
4170239        NotFound  Found     Found   NaN   NaN  Found     Found            NaN      samsung browser 8.2       NaN             NaN     F     F     T     F     mobile                      SAMSUNG

[141907 rows x 17 columns]

这里我们看到的是原始数据集中的非数值型字段。我们需要对各个非标准字符串字段的拆分和聚合,重新组织字段内容,另外我们看到训练数据集和测试数据集的字段名不太一样。有的是_,有的是-。

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
from tqdm import tqdm_notebook
from sklearn.metrics import roc_auc_score
from sklearn.preprocessing import LabelEncoder
import gc
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')

if __name__ == "__main__":

    def reduce_mem_usage(df):
        # 根据pandas列内容来选择合适的列类型
        start_mem = df.memory_usage().sum() / 1024**2
        print("Memory usage of dataframe is {:.2f} MB".format(start_mem))
        for col in df.columns:
            col_type = df[col].dtype
            if col_type != object:
                c_min = df[col].min()
                c_max = df[col].max()
                # 进行数值类型的内存压缩
                if str(col_type)[: 3] == 'int':
                    if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:
                        df[col] = df[col].astype(np.int8)
                    elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:
                        df[col] = df[col].astype(np.int16)
                    elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:
                        df[col] = df[col].astype(np.int32)
                    elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:
                        df[col] = df[col].astype(np.int64)
                else:
                    if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:
                        df[col] = df[col].astype(np.float16)
                    elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:
                        df[col] = df[col].astype(np.float32)
                    else:
                        df[col] = df[col].astype(np.float64)
            else:
                df[col] = df[col].astype('category')
        end_men = df.memory_usage().sum() / 1024**2
        print("Memory usage after optimization is {:.2f} MB".format(end_men))
        print("Decreased by {:.1f}".format(100 * (start_mem - end_men) / start_mem))
        return df

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", index_col='TransactionID')
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", index_col='TransactionID')
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", index_col='TransactionID')
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", index_col='TransactionID')
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # print(train_identity.select_dtypes(include=['object']))
    # print(test_identity.select_dtypes(include=['object']))
    # print(test_identity.columns[test_identity.columns.str.contains('id-')])
    test_identity = test_identity.rename(columns=lambda x: x.replace("id-", "id_"))

    def id_split(df):
        # 拆分
        df['device_name'] = df['DeviceInfo'].str.split('/', expand=True)[0]
        df['device_version'] = df['DeviceInfo'].str.split('/', expand=True)[0]
        df['OS_id_30'] = df['id_30'].str.split(' ', expand=True)[0]
        df['version_id_30'] = df['id_30'].str.split(' ', expand=True)[1]
        df['browser_id_31'] = df['id_31'].str.split(' ', expand=True)[0]
        df['version_id_31'] = df['id_31'].str.split(' ', expand=True)[1]
        df['screen_width'] = df['id_33'].str.split('x', expand=True)[0]
        df['screen_height'] = df['id_33'].str.split('x', expand=True)[1]
        df['id_34'] = df['id_34'].str.split(':', expand=True)[1]
        df['id_23'] = df['id_23'].str.split(':', expand=True)[1]
        # 聚合
        df.loc[df['device_name'].str.contains('SM', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('SAMSUNG', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('GT-', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('Moto G', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('Moto', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('moto', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('LG-', na=False), 'device_name'] = "LG"
        df.loc[df['device_name'].str.contains('rv:', na=False), 'device_name'] = "RV"
        df.loc[df['device_name'].str.contains('HUAWEI', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('ALE-', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('-L', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('Blade', na=False), 'device_name'] = "ZTE"
        df.loc[df['device_name'].str.contains('BLADE', na=False), 'device_name'] = "ZTE"
        df.loc[df['device_name'].str.contains('Linux', na=False), 'device_name'] = "Linux"
        df.loc[df['device_name'].str.contains('XT', na=False), 'device_name'] = "Sony"
        df.loc[df['device_name'].str.contains('HTC', na=False), 'device_name'] = "HTC"
        df.loc[df['device_name'].str.contains('ASUS', na=False), 'device_name'] = "Asus"
        df.loc[df.device_name.isin(df.device_name.value_counts()[df.device_name.value_counts() < 200].index), 'device_name'] = "Others"
        df['had_id'] = 1
        gc.collect()
        return df

    train_identity = id_split(train_identity)
    test_identity = id_split(test_identity)
    train = train_transaction.merge(train_identity, how='left', left_index=True, right_index=True)
    test = test_transaction.merge(test_identity, how='left', left_index=True, right_index=True)
    # 删除原始数据
    del train_identity, train_transaction, test_identity, test_transaction
    gc.collect()
    print(train.shape)
    print(test.shape)
    print(train.head())
    print(test.head())

运行结果

(590540, 442)
(506691, 441)
               isFraud  TransactionDT  TransactionAmt ProductCD  card1  card2  card3       card4  card5   card6  addr1  addr2  dist1  dist2 P_emaildomain R_emaildomain   C1   C2   C3   C4   C5   C6   C7   C8   C9  C10  C11  C12   C13  C14     D1     D2    D3    D4   D5  D6  D7  D8  D9   D10    D11  D12  D13  D14    D15   M1   M2   M3   M4   M5   M6   M7   M8   M9   V1   V2   V3   V4   V5   V6   V7   V8   V9  V10  V11  V12  V13  V14  V15  V16  V17  V18  V19  V20  V21  V22  V23  V24  V25  V26  V27  V28  V29  V30  V31  V32  V33  V34  V35  V36  V37  V38  V39  V40  V41  V42  V43  V44  V45  V46  V47  V48  V49  V50  V51  V52  V53  V54  V55  V56  V57  V58  V59  V60  V61  V62  V63  V64  V65  V66  V67  V68  V69  V70  V71  V72  V73  V74  V75  V76  V77  V78  V79  V80  V81  V82  V83  V84  V85  V86  V87  V88  V89  V90  V91  V92  V93  V94  V95   V96   V97  V98   V99  V100  V101  V102  V103  V104  V105  V106  V107  V108  V109  V110  V111  V112  V113  V114  V115  V116  V117  V118  V119  V120  V121  \
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
2987000              0          86400            68.5         W  13926    NaN  150.0    discover  142.0  credit  315.0   87.0   19.0    NaN           NaN           NaN  1.0  1.0  0.0  0.0  0.0  1.0  0.0  0.0  1.0  0.0  2.0  0.0   1.0  1.0   14.0    NaN  13.0   NaN  NaN NaN NaN NaN NaN  13.0   13.0  NaN  NaN  NaN    0.0    T    T    T   M2    F    T  NaN  NaN  NaN  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   1.0   0.0  0.0   0.0   0.0   0.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
2987001              0          86401            29.0         W   2755  404.0  150.0  mastercard  102.0  credit  325.0   87.0    NaN    NaN     gmail.com           NaN  1.0  1.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   0.0  NaN NaN NaN NaN NaN   0.0    NaN  NaN  NaN  NaN    0.0  NaN  NaN  NaN   M0    T    T  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  0.0  0.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0  0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
2987002              0          86469            59.0         W   4663  490.0  150.0        visa  166.0   debit  330.0   87.0  287.0    NaN   outlook.com           NaN  1.0  1.0  0.0  0.0  0.0  1.0  0.0  0.0  1.0  0.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   0.0  NaN NaN NaN NaN NaN   0.0  315.0  NaN  NaN  NaN  315.0    T    T    T   M0    F    F    F    F    F  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0  0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
2987003              0          86499            50.0         W  18132  567.0  150.0  mastercard  117.0   debit  476.0   87.0    NaN    NaN     yahoo.com           NaN  2.0  5.0  0.0  0.0  0.0  4.0  0.0  0.0  1.0  0.0  1.0  0.0  25.0  1.0  112.0  112.0   0.0  94.0  0.0 NaN NaN NaN NaN  84.0    NaN  NaN  NaN  NaN  111.0  NaN  NaN  NaN   M0    T    F  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  48.0  28.0  0.0  10.0   4.0   1.0  38.0  24.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
2987004              0          86506            50.0         H   4497  514.0  150.0  mastercard  102.0  credit  420.0   87.0    NaN    NaN     gmail.com           NaN  1.0  1.0  0.0  0.0  0.0  1.0  0.0  1.0  0.0  1.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   NaN  NaN NaN NaN NaN NaN   NaN    NaN  NaN  NaN  NaN    NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  0.0   0.0   0.0  0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   

               V122  V123  V124  V125  V126    V127   V128  V129   V130   V131  V132    V133   V134  V135  V136  V137  V138  V139  V140  V141  V142  V143  V144   V145  V146  V147  V148  V149    V150  V151  V152  V153  V154  V155  V156  V157  V158          V159           V160  V161  V162  V163   V164    V165    V166  V167  V168  V169  V170  V171  V172  V173  V174  V175  V176  V177  V178  V179  V180  V181  V182  V183  V184  V185  V186  V187  V188  V189  V190  V191  V192  V193  V194  V195  V196  V197  V198  V199  V200  V201  V202  V203  V204  V205  V206  V207  V208  V209  V210  V211  V212  V213  V214  V215  V216  V217  V218  V219  V220  V221  V222  V223  V224  V225  V226  V227  V228  V229  V230  V231  V232  V233  V234  V235  V236  V237  V238  V239  V240  V241  V242  V243  V244  V245  V246  V247  V248  V249  V250  V251  V252  V253  V254  V255  V256  V257  V258  V259  V260  V261  V262  V263  V264  V265  V266  V267  V268  V269  V270  V271  V272  V273  V274  V275  V276  V277  V278  V279  \
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
2987000         1.0   1.0   1.0   1.0   0.0   117.0    0.0   0.0    0.0    0.0   0.0   117.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   
2987001         1.0   1.0   1.0   1.0   0.0     0.0    0.0   0.0    0.0    0.0   0.0     0.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   
2987002         1.0   1.0   1.0   1.0   0.0     0.0    0.0   0.0    0.0    0.0   0.0     0.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   
2987003         1.0   1.0   1.0   1.0  50.0  1758.0  925.0   0.0  354.0  135.0  50.0  1404.0  790.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   1.0   
2987004         1.0   1.0   1.0   1.0   0.0     0.0    0.0   0.0    0.0    0.0   0.0     0.0    0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   6.0  18.0  140.0   0.0   0.0   0.0   0.0  1803.0  49.0  64.0   0.0   0.0   0.0   0.0   0.0   0.0  15557.990234  169690.796875   0.0   0.0   0.0  515.0  5155.0  2840.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   

               V280  V281  V282  V283  V284  V285  V286  V287  V288  V289  V290  V291  V292  V293  V294  V295  V296  V297  V298  V299  V300  V301  V302  V303  V304  V305  V306    V307   V308  V309   V310  V311   V312  V313  V314  V315  V316    V317   V318  V319  V320  V321  V322  V323  V324  V325  V326  V327  V328  V329  V330  V331  V332  V333  V334  V335  V336  V337  V338  V339  id_01    id_02  id_03  id_04  id_05  id_06  id_07  id_08  id_09  id_10  id_11     id_12  id_13  id_14 id_15     id_16  id_17  id_18  id_19  id_20  id_21  id_22 id_23  id_24  id_25  id_26 id_27 id_28     id_29        id_30                id_31  id_32      id_33 id_34 id_35 id_36 id_37 id_38 DeviceType                     DeviceInfo device_name          device_version OS_id_30 version_id_30 browser_id_31 version_id_31 screen_width screen_height  had_id  
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
2987000         0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.0   117.0    0.0   0.0    0.0   0.0    0.0   0.0   0.0   0.0   0.0   117.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN       NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN       NaN          NaN                  NaN    NaN        NaN   NaN   NaN   NaN   NaN   NaN        NaN                            NaN         NaN                     NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
2987001         0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.0     0.0    0.0   0.0    0.0   0.0    0.0   0.0   0.0   0.0   0.0     0.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN       NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN       NaN          NaN                  NaN    NaN        NaN   NaN   NaN   NaN   NaN   NaN        NaN                            NaN         NaN                     NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
2987002         0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.0     0.0    0.0   0.0    0.0   0.0    0.0   0.0   0.0   0.0   0.0     0.0    0.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN       NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN       NaN          NaN                  NaN    NaN        NaN   NaN   NaN   NaN   NaN   NaN        NaN                            NaN         NaN                     NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
2987003        28.0   0.0   0.0   0.0   0.0  10.0   0.0   4.0   0.0   0.0   1.0   1.0   1.0   1.0  38.0  24.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0  50.0  1758.0  925.0   0.0  354.0   0.0  135.0   0.0   0.0   0.0  50.0  1404.0  790.0   0.0   0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN       NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN       NaN          NaN                  NaN    NaN        NaN   NaN   NaN   NaN   NaN   NaN        NaN                            NaN         NaN                     NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
2987004         0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   0.0     0.0    0.0   0.0    0.0   0.0    0.0   0.0   0.0   0.0   0.0     0.0    0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0    0.0  70787.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN  100.0  NotFound    NaN -480.0   New  NotFound  166.0    NaN  542.0  144.0    NaN    NaN   NaN    NaN    NaN    NaN   NaN   New  NotFound  Android 7.0  samsung browser 6.2   32.0  2220x1080     2     T     F     T     T     mobile  SAMSUNG SM-G892A Build/NRD90M     Samsung  SAMSUNG SM-G892A Build  Android           7.0       samsung       browser         2220          1080     1.0  
               TransactionDT  TransactionAmt ProductCD  card1  card2  card3       card4  card5  card6  addr1  addr2   dist1  dist2 P_emaildomain R_emaildomain   C1   C2   C3   C4   C5   C6   C7   C8   C9  C10  C11  C12    C13  C14     D1     D2    D3     D4    D5  D6  D7  D8  D9    D10    D11  D12  D13  D14    D15 M1 M2 M3   M4   M5 M6   M7   M8   M9   V1   V2   V3   V4   V5   V6   V7   V8   V9  V10  V11  V12  V13  V14  V15  V16  V17  V18  V19  V20  V21  V22  V23  V24  V25  V26  V27  V28  V29  V30  V31  V32  V33  V34  V35  V36  V37  V38  V39  V40  V41  V42  V43  V44  V45  V46  V47  V48  V49  V50  V51  V52  V53  V54  V55  V56  V57  V58  V59  V60  V61  V62  V63  V64  V65  V66  V67  V68  V69  V70  V71  V72  V73  V74  V75  V76  V77  V78  V79  V80  V81  V82  V83  V84  V85  V86  V87  V88  V89  V90  V91  V92  V93  V94  V95  V96  V97  V98  V99  V100  V101  V102  V103  V104  V105  V106  V107  V108  V109  V110  V111  V112  V113  V114  V115  V116  V117  V118  V119  V120  V121  V122  V123  V124  \
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
3663549             18403224           31.95         W  10409  111.0  150.0        visa  226.0  debit  170.0   87.0     1.0    NaN     gmail.com           NaN  6.0  6.0  0.0  0.0  3.0  4.0  0.0  0.0  6.0  0.0  5.0  1.0  115.0  6.0  419.0  419.0  27.0  398.0  27.0 NaN NaN NaN NaN  418.0  203.0  NaN  NaN  NaN  409.0  T  T  F  NaN  NaN  F    T    T    T  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
3663550             18403263           49.00         W   4272  111.0  150.0        visa  226.0  debit  299.0   87.0     4.0    NaN       aol.com           NaN  3.0  2.0  0.0  0.0  0.0  1.0  0.0  0.0  2.0  0.0  1.0  1.0   12.0  2.0  149.0  149.0   7.0  634.0   7.0 NaN NaN NaN NaN  231.0  634.0  NaN  NaN  NaN  634.0  T  F  F   M0  NaN  F  NaN  NaN  NaN  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  4.0  1.0  0.0  4.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
3663551             18403310          171.00         W   4476  574.0  150.0        visa  226.0  debit  472.0   87.0  2635.0    NaN   hotmail.com           NaN  2.0  2.0  0.0  0.0  0.0  5.0  0.0  0.0  4.0  0.0  2.0  0.0   22.0  2.0  137.0  137.0  10.0   97.0  10.0 NaN NaN NaN NaN  136.0  136.0  NaN  NaN  NaN   97.0  T  T  F   M0    F  F    F    F    F  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  2.0  2.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  2.0  1.0  2.0  0.0  0.0  0.0  1.0  2.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  5.0  0.0  0.0  3.0   0.0   0.0   0.0   0.0   0.0   2.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
3663552             18403310          284.95         W  10989  360.0  150.0        visa  166.0  debit  205.0   87.0    17.0    NaN     gmail.com           NaN  5.0  2.0  0.0  0.0  1.0  1.0  0.0  0.0  2.0  0.0  2.0  0.0    7.0  4.0   42.0   42.0  41.0  242.0  41.0 NaN NaN NaN NaN  242.0  242.0  NaN  NaN  NaN  242.0  T  T  T  NaN  NaN  T  NaN  NaN  NaN  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  2.0  2.0  2.0  2.0  0.0  0.0  1.0  0.0  0.0  2.0  2.0  2.0  2.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   
3663553             18403317           67.95         W  18018  452.0  150.0  mastercard  117.0  debit  264.0   87.0     6.0    NaN     gmail.com           NaN  6.0  6.0  0.0  0.0  2.0  5.0  0.0  0.0  5.0  0.0  6.0  0.0   14.0  6.0   22.0   22.0   0.0   22.0   0.0 NaN NaN NaN NaN   22.0   22.0  NaN  NaN  NaN   22.0  T  T  T  NaN  NaN  F    F    T    T  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  1.0  3.0  1.0  1.0  3.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   

               V125       V126        V127       V128       V129        V130       V131  V132  V133  V134  V135   V136  V137  V138  V139  V140  V141  V142  V143  V144  V145  V146  V147  V148  V149  V150  V151  V152  V153  V154  V155  V156  V157  V158  V159  V160  V161  V162  V163  V164  V165  V166  V167  V168  V169  V170  V171  V172  V173  V174  V175  V176  V177  V178  V179  V180  V181  V182  V183  V184  V185  V186  V187  V188  V189  V190  V191  V192  V193  V194  V195  V196  V197  V198  V199  V200  V201  V202  V203  V204  V205  V206  V207  V208  V209  V210  V211  V212  V213  V214  V215  V216  V217  V218  V219  V220  V221  V222  V223  V224  V225  V226  V227  V228  V229  V230  V231  V232  V233  V234  V235  V236  V237  V238  V239  V240  V241  V242  V243  V244  V245  V246  V247  V248  V249  V250  V251  V252  V253  V254  V255  V256  V257  V258  V259  V260  V261  V262  V263  V264  V265  V266  V267  V268  V269  V270  V271  V272  V273  V274  V275  V276  V277  V278  V279  V280  V281  V282  \
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
3663549         1.0   0.000000   47.950001   0.000000   0.000000   47.950001   0.000000   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   0.0   0.0   
3663550         1.0   0.000000  280.000000  77.000000   0.000000  280.000000  77.000000   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   1.0   0.0   0.0   
3663551         1.0   0.000000  968.000000   0.000000   0.000000  705.000000   0.000000   0.0   0.0   0.0   0.0  263.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   0.0   0.0   
3663552         1.0   0.000000    0.000000   0.000000   0.000000    0.000000   0.000000   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   0.0   1.0   
3663553         1.0  67.949997  183.850006  67.949997  67.949997  183.850006  67.949997   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   1.0   1.0   0.0   1.0   

               V283  V284  V285  V286  V287  V288  V289  V290  V291  V292  V293  V294  V295  V296  V297  V298  V299  V300  V301  V302  V303  V304  V305       V306         V307       V308       V309         V310       V311       V312        V313        V314        V315  V316  V317  V318  V319   V320  V321  V322  V323  V324  V325  V326  V327  V328  V329  V330  V331  V332  V333  V334  V335  V336  V337  V338  V339  id_01  id_02  id_03  id_04  id_05  id_06  id_07  id_08  id_09  id_10  id_11 id_12  id_13  id_14 id_15 id_16  id_17  id_18  id_19  id_20  id_21  id_22 id_23  id_24  id_25  id_26 id_27 id_28 id_29 id_30 id_31  id_32 id_33 id_34 id_35 id_36 id_37 id_38 DeviceType DeviceInfo device_name device_version OS_id_30 version_id_30 browser_id_31 version_id_31 screen_width screen_height  had_id  
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
3663549         0.0   0.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.000000    47.950001   0.000000   0.000000    47.950001   0.000000   0.000000    0.000000    0.000000    0.000000   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN   NaN   NaN        NaN        NaN         NaN            NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
3663550         0.0   0.0   4.0   0.0   1.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.000000   280.000000  77.000000   0.000000   280.000000   0.000000  77.000000    0.000000    0.000000    0.000000   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN   NaN   NaN        NaN        NaN         NaN            NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
3663551         0.0   0.0   4.0   0.0   0.0   0.0   0.0   1.0   2.0   1.0   0.0   0.0   0.0   2.0   0.0   2.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.000000  1321.000000   0.000000   0.000000  1058.000000   0.000000   0.000000    0.000000    0.000000    0.000000   0.0   0.0   0.0   0.0  263.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN   NaN   NaN        NaN        NaN         NaN            NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
3663552         1.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   0.000000     0.000000   0.000000   0.000000     0.000000   0.000000   0.000000  282.540009  282.540009  282.540009   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN   NaN   NaN        NaN        NaN         NaN            NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
3663553         1.0   1.0   3.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0  67.949997   183.850006  67.949997  67.949997   183.850006  67.949997  67.949997   67.949997  183.850006   67.949997   0.0   0.0   0.0   0.0    0.0   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN   NaN   NaN        NaN        NaN         NaN            NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  

通过结果,我们可以看到,当我们将两张表合并后,训练数据集有442个字段,测试数据集有441个字段。由于字段太多,我们需要通过一定的方法来获取我们需要的特征,这里我们通过null importance(标签乱序后查看特征重要性)提取跟标签不那么强相关的列,即如下的一些特征(这是一个费时费力的过程,需要一定的耐心)

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
from tqdm import tqdm_notebook
from sklearn.metrics import roc_auc_score
from sklearn.preprocessing import LabelEncoder
import gc
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')

if __name__ == "__main__":

    def reduce_mem_usage(df):
        # 根据pandas列内容来选择合适的列类型
        start_mem = df.memory_usage().sum() / 1024**2
        print("Memory usage of dataframe is {:.2f} MB".format(start_mem))
        for col in df.columns:
            col_type = df[col].dtype
            if col_type != object:
                c_min = df[col].min()
                c_max = df[col].max()
                # 进行数值类型的内存压缩
                if str(col_type)[: 3] == 'int':
                    if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:
                        df[col] = df[col].astype(np.int8)
                    elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:
                        df[col] = df[col].astype(np.int16)
                    elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:
                        df[col] = df[col].astype(np.int32)
                    elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:
                        df[col] = df[col].astype(np.int64)
                else:
                    if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:
                        df[col] = df[col].astype(np.float16)
                    elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:
                        df[col] = df[col].astype(np.float32)
                    else:
                        df[col] = df[col].astype(np.float64)
            else:
                df[col] = df[col].astype('category')
        end_men = df.memory_usage().sum() / 1024**2
        print("Memory usage after optimization is {:.2f} MB".format(end_men))
        print("Decreased by {:.1f}".format(100 * (start_mem - end_men) / start_mem))
        return df

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", index_col='TransactionID')
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", index_col='TransactionID')
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", index_col='TransactionID')
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", index_col='TransactionID')
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # print(train_identity.select_dtypes(include=['object']))
    # print(test_identity.select_dtypes(include=['object']))
    # print(test_identity.columns[test_identity.columns.str.contains('id-')])
    test_identity = test_identity.rename(columns=lambda x: x.replace("id-", "id_"))

    def id_split(df):
        # 拆分
        df['device_name'] = df['DeviceInfo'].str.split('/', expand=True)[0]
        df['device_version'] = df['DeviceInfo'].str.split('/', expand=True)[0]
        df['OS_id_30'] = df['id_30'].str.split(' ', expand=True)[0]
        df['version_id_30'] = df['id_30'].str.split(' ', expand=True)[1]
        df['browser_id_31'] = df['id_31'].str.split(' ', expand=True)[0]
        df['version_id_31'] = df['id_31'].str.split(' ', expand=True)[1]
        df['screen_width'] = df['id_33'].str.split('x', expand=True)[0]
        df['screen_height'] = df['id_33'].str.split('x', expand=True)[1]
        df['id_34'] = df['id_34'].str.split(':', expand=True)[1]
        df['id_23'] = df['id_23'].str.split(':', expand=True)[1]
        # 聚合
        df.loc[df['device_name'].str.contains('SM', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('SAMSUNG', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('GT-', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('Moto G', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('Moto', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('moto', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('LG-', na=False), 'device_name'] = "LG"
        df.loc[df['device_name'].str.contains('rv:', na=False), 'device_name'] = "RV"
        df.loc[df['device_name'].str.contains('HUAWEI', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('ALE-', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('-L', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('Blade', na=False), 'device_name'] = "ZTE"
        df.loc[df['device_name'].str.contains('BLADE', na=False), 'device_name'] = "ZTE"
        df.loc[df['device_name'].str.contains('Linux', na=False), 'device_name'] = "Linux"
        df.loc[df['device_name'].str.contains('XT', na=False), 'device_name'] = "Sony"
        df.loc[df['device_name'].str.contains('HTC', na=False), 'device_name'] = "HTC"
        df.loc[df['device_name'].str.contains('ASUS', na=False), 'device_name'] = "Asus"
        df.loc[df.device_name.isin(df.device_name.value_counts()[df.device_name.value_counts() < 200].index), 'device_name'] = "Others"
        df['had_id'] = 1
        gc.collect()
        return df

    train_identity = id_split(train_identity)
    test_identity = id_split(test_identity)
    train = train_transaction.merge(train_identity, how='left', left_index=True, right_index=True)
    test = test_transaction.merge(test_identity, how='left', left_index=True, right_index=True)
    # 删除原始数据
    del train_identity, train_transaction, test_identity, test_transaction
    gc.collect()
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # 通过null importance筛选特征
    useful_features = ['TransactionAmt', 'ProductCD', 'card1', 'card2', 'card3', 'card4', 'card5', 'card6', 'addr1',
                       'addr2', 'dist1',
                       'P_emaildomain', 'R_emaildomain', 'C1', 'C2', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10', 'C11',
                       'C12', 'C13',
                       'C14', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D8', 'D9', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15',
                       'M2', 'M3',
                       'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V10', 'V11',
                       'V12', 'V13', 'V17',
                       'V19', 'V20', 'V29', 'V30', 'V33', 'V34', 'V35', 'V36', 'V37', 'V38', 'V40', 'V44', 'V45', 'V46',
                       'V47', 'V48',
                       'V49', 'V51', 'V52', 'V53', 'V54', 'V56', 'V58', 'V59', 'V60', 'V61', 'V62', 'V63', 'V64', 'V69',
                       'V70', 'V71',
                       'V72', 'V73', 'V74', 'V75', 'V76', 'V78', 'V80', 'V81', 'V82', 'V83', 'V84', 'V85', 'V87', 'V90',
                       'V91', 'V92',
                       'V93', 'V94', 'V95', 'V96', 'V97', 'V99', 'V100', 'V126', 'V127', 'V128', 'V130', 'V131', 'V138',
                       'V139', 'V140',
                       'V143', 'V145', 'V146', 'V147', 'V149', 'V150', 'V151', 'V152', 'V154', 'V156', 'V158', 'V159',
                       'V160', 'V161',
                       'V162', 'V163', 'V164', 'V165', 'V166', 'V167', 'V169', 'V170', 'V171', 'V172', 'V173', 'V175',
                       'V176', 'V177',
                       'V178', 'V180', 'V182', 'V184', 'V187', 'V188', 'V189', 'V195', 'V197', 'V200', 'V201', 'V202',
                       'V203', 'V204',
                       'V205', 'V206', 'V207', 'V208', 'V209', 'V210', 'V212', 'V213', 'V214', 'V215', 'V216', 'V217',
                       'V219', 'V220',
                       'V221', 'V222', 'V223', 'V224', 'V225', 'V226', 'V227', 'V228', 'V229', 'V231', 'V233', 'V234',
                       'V238', 'V239',
                       'V242', 'V243', 'V244', 'V245', 'V246', 'V247', 'V249', 'V251', 'V253', 'V256', 'V257', 'V258',
                       'V259', 'V261',
                       'V262', 'V263', 'V264', 'V265', 'V266', 'V267', 'V268', 'V270', 'V271', 'V272', 'V273', 'V274',
                       'V275', 'V276',
                       'V277', 'V278', 'V279', 'V280', 'V282', 'V283', 'V285', 'V287', 'V288', 'V289', 'V291', 'V292',
                       'V294', 'V303',
                       'V304', 'V306', 'V307', 'V308', 'V310', 'V312', 'V313', 'V314', 'V315', 'V317', 'V322', 'V323',
                       'V324', 'V326',
                       'V329', 'V331', 'V332', 'V333', 'V335', 'V336', 'V338', 'id_01', 'id_02', 'id_03', 'id_05',
                       'id_06', 'id_09',
                       'id_11', 'id_12', 'id_13', 'id_14', 'id_15', 'id_17', 'id_19', 'id_20', 'id_30', 'id_31',
                       'id_32', 'id_33',
                       'id_36', 'id_37', 'id_38', 'DeviceType', 'DeviceInfo', 'device_name', 'device_version',
                       'OS_id_30', 'version_id_30',
                       'browser_id_31', 'version_id_31', 'screen_width', 'screen_height', 'had_id']
    cols_to_drop = [col for col in train.columns if col not in useful_features]
    cols_to_drop.remove('isFraud')
    cols_to_drop.remove('TransactionDT')
    train = train.drop(cols_to_drop, axis=1)
    test = test.drop(cols_to_drop, axis=1)
    print(train.shape)
    print(test.shape)
    print(train.head())
    print(test.head())

运行结果

(590540, 290)
(506691, 289)
               isFraud  TransactionDT  TransactionAmt ProductCD  card1  card2  card3       card4  card5   card6  addr1  addr2  dist1 P_emaildomain R_emaildomain   C1   C2   C4   C5   C6   C7   C8   C9  C10  C11  C12   C13  C14     D1     D2    D3    D4   D5  D6  D8  D9   D10    D11  D12  D13  D14    D15   M2   M3   M4   M5   M6   M7   M8   M9   V3   V4   V5   V6   V7   V8   V9  V10  V11  V12  V13  V17  V19  V20  V29  V30  V33  V34  V35  V36  V37  V38  V40  V44  V45  V46  V47  V48  V49  V51  V52  V53  V54  V56  V58  V59  V60  V61  V62  V63  V64  V69  V70  V71  V72  V73  V74  V75  V76  V78  V80  V81  V82  V83  V84  V85  V87  V90  V91  V92  V93  V94  V95   V96   V97   V99  V100  V126    V127   V128   V130   V131  V138  V139  V140  V143   V145  V146  V147  V149    V150  V151  V152  V154  V156  V158          V159           V160  V161  V162  V163   V164    V165    V166  V167  V169  V170  V171  V172  V173  V175  V176  V177  V178  V180  V182  V184  V187  V188  V189  V195  V197  V200  V201  \
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
2987000              0          86400            68.5         W  13926    NaN  150.0    discover  142.0  credit  315.0   87.0   19.0           NaN           NaN  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  0.0  2.0  0.0   1.0  1.0   14.0    NaN  13.0   NaN  NaN NaN NaN NaN  13.0   13.0  NaN  NaN  NaN    0.0    T    T   M2    F    T  NaN  NaN  NaN  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0   1.0   0.0   0.0   0.0   0.0   117.0    0.0    0.0    0.0   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
2987001              0          86401            29.0         W   2755  404.0  150.0  mastercard  102.0  credit  325.0   87.0    NaN     gmail.com           NaN  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   0.0  NaN NaN NaN NaN   0.0    NaN  NaN  NaN  NaN    0.0  NaN  NaN   M0    T    T  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0   0.0   0.0   0.0     0.0    0.0    0.0    0.0   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
2987002              0          86469            59.0         W   4663  490.0  150.0        visa  166.0   debit  330.0   87.0  287.0   outlook.com           NaN  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  0.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   0.0  NaN NaN NaN NaN   0.0  315.0  NaN  NaN  NaN  315.0    T    T   M0    F    F    F    F    F  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0   0.0   0.0   0.0     0.0    0.0    0.0    0.0   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
2987003              0          86499            50.0         W  18132  567.0  150.0  mastercard  117.0   debit  476.0   87.0    NaN     yahoo.com           NaN  2.0  5.0  0.0  0.0  4.0  0.0  0.0  1.0  0.0  1.0  0.0  25.0  1.0  112.0  112.0   0.0  94.0  0.0 NaN NaN NaN  84.0    NaN  NaN  NaN  NaN  111.0  NaN  NaN   M0    T    F  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  1.0  48.0  28.0  10.0   4.0  50.0  1758.0  925.0  354.0  135.0   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN           NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
2987004              0          86506            50.0         H   4497  514.0  150.0  mastercard  102.0  credit  420.0   87.0    NaN     gmail.com           NaN  1.0  1.0  0.0  0.0  1.0  0.0  1.0  0.0  1.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   NaN  NaN NaN NaN NaN   NaN    NaN  NaN  NaN  NaN    NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  0.0   0.0   0.0   0.0   0.0   0.0     0.0    0.0    0.0    0.0   0.0   0.0   0.0   6.0  140.0   0.0   0.0   0.0  1803.0  49.0  64.0   0.0   0.0   0.0  15557.990234  169690.796875   0.0   0.0   0.0  515.0  5155.0  2840.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   1.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   

               V202  V203  V204  V205  V206  V207  V208  V209  V210  V212  V213  V214  V215  V216  V217  V219  V220  V221  V222  V223  V224  V225  V226  V227  V228  V229  V231  V233  V234  V238  V239  V242  V243  V244  V245  V246  V247  V249  V251  V253  V256  V257  V258  V259  V261  V262  V263  V264  V265  V266  V267  V268  V270  V271  V272  V273  V274  V275  V276  V277  V278  V279  V280  V282  V283  V285  V287  V288  V289  V291  V292  V294  V303  V304  V306    V307   V308   V310   V312  V313  V314  V315    V317  V322  V323  V324  V326  V329  V331  V332  V333  V335  V336  V338  id_01    id_02  id_03  id_05  id_06  id_09  id_11     id_12  id_13  id_14 id_15  id_17  id_19  id_20        id_30                id_31  id_32      id_33 id_36 id_37 id_38 DeviceType                     DeviceInfo device_name          device_version OS_id_30 version_id_30 browser_id_31 version_id_31 screen_width screen_height  had_id  
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
2987000         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   117.0    0.0    0.0    0.0   0.0   0.0   0.0   117.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN    NaN    NaN    NaN          NaN                  NaN    NaN        NaN   NaN   NaN   NaN        NaN                            NaN         NaN                     NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
2987001         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0     0.0    0.0    0.0    0.0   0.0   0.0   0.0     0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN    NaN    NaN    NaN          NaN                  NaN    NaN        NaN   NaN   NaN   NaN        NaN                            NaN         NaN                     NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
2987002         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0     0.0    0.0    0.0    0.0   0.0   0.0   0.0     0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN    NaN    NaN    NaN          NaN                  NaN    NaN        NaN   NaN   NaN   NaN        NaN                            NaN         NaN                     NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
2987003         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   1.0  28.0   0.0   0.0  10.0   4.0   0.0   0.0   1.0   1.0  38.0   0.0   0.0  50.0  1758.0  925.0  354.0  135.0   0.0   0.0   0.0  1404.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN       NaN    NaN    NaN   NaN    NaN    NaN    NaN          NaN                  NaN    NaN        NaN   NaN   NaN   NaN        NaN                            NaN         NaN                     NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
2987004         0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   1.0   1.0   0.0     0.0    0.0    0.0    0.0   0.0   0.0   0.0     0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0    0.0  70787.0    NaN    NaN    NaN    NaN  100.0  NotFound    NaN -480.0   New  166.0  542.0  144.0  Android 7.0  samsung browser 6.2   32.0  2220x1080     F     T     T     mobile  SAMSUNG SM-G892A Build/NRD90M     Samsung  SAMSUNG SM-G892A Build  Android           7.0       samsung       browser         2220          1080     1.0  
               TransactionDT  TransactionAmt ProductCD  card1  card2  card3       card4  card5  card6  addr1  addr2   dist1 P_emaildomain R_emaildomain   C1   C2   C4   C5   C6   C7   C8   C9  C10  C11  C12    C13  C14     D1     D2    D3     D4    D5  D6  D8  D9    D10    D11  D12  D13  D14    D15 M2 M3   M4   M5 M6   M7   M8   M9   V3   V4   V5   V6   V7   V8   V9  V10  V11  V12  V13  V17  V19  V20  V29  V30  V33  V34  V35  V36  V37  V38  V40  V44  V45  V46  V47  V48  V49  V51  V52  V53  V54  V56  V58  V59  V60  V61  V62  V63  V64  V69  V70  V71  V72  V73  V74  V75  V76  V78  V80  V81  V82  V83  V84  V85  V87  V90  V91  V92  V93  V94  V95  V96  V97  V99  V100       V126        V127       V128        V130       V131  V138  V139  V140  V143  V145  V146  V147  V149  V150  V151  V152  V154  V156  V158  V159  V160  V161  V162  V163  V164  V165  V166  V167  V169  V170  V171  V172  V173  V175  V176  V177  V178  V180  V182  V184  V187  V188  V189  V195  V197  V200  V201  V202  V203  V204  \
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
3663549             18403224           31.95         W  10409  111.0  150.0        visa  226.0  debit  170.0   87.0     1.0     gmail.com           NaN  6.0  6.0  0.0  3.0  4.0  0.0  0.0  6.0  0.0  5.0  1.0  115.0  6.0  419.0  419.0  27.0  398.0  27.0 NaN NaN NaN  418.0  203.0  NaN  NaN  NaN  409.0  T  F  NaN  NaN  F    T    T    T  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  0.0  1.0   0.0   0.000000   47.950001   0.000000   47.950001   0.000000   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
3663550             18403263           49.00         W   4272  111.0  150.0        visa  226.0  debit  299.0   87.0     4.0       aol.com           NaN  3.0  2.0  0.0  0.0  1.0  0.0  0.0  2.0  0.0  1.0  1.0   12.0  2.0  149.0  149.0   7.0  634.0   7.0 NaN NaN NaN  231.0  634.0  NaN  NaN  NaN  634.0  F  F   M0  NaN  F  NaN  NaN  NaN  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  4.0  1.0  4.0   1.0   0.000000  280.000000  77.000000  280.000000  77.000000   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
3663551             18403310          171.00         W   4476  574.0  150.0        visa  226.0  debit  472.0   87.0  2635.0   hotmail.com           NaN  2.0  2.0  0.0  0.0  5.0  0.0  0.0  4.0  0.0  2.0  0.0   22.0  2.0  137.0  137.0  10.0   97.0  10.0 NaN NaN NaN  136.0  136.0  NaN  NaN  NaN   97.0  T  F   M0    F  F    F    F    F  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  2.0  2.0  0.0  0.0  1.0  2.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  5.0  0.0  3.0   0.0   0.000000  968.000000   0.000000  705.000000   0.000000   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
3663552             18403310          284.95         W  10989  360.0  150.0        visa  166.0  debit  205.0   87.0    17.0     gmail.com           NaN  5.0  2.0  0.0  1.0  1.0  0.0  0.0  2.0  0.0  2.0  0.0    7.0  4.0   42.0   42.0  41.0  242.0  41.0 NaN NaN NaN  242.0  242.0  NaN  NaN  NaN  242.0  T  T  NaN  NaN  T  NaN  NaN  NaN  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  2.0  2.0  2.0  2.0  0.0  2.0  2.0  2.0  2.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.000000    0.000000   0.000000    0.000000   0.000000   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
3663553             18403317           67.95         W  18018  452.0  150.0  mastercard  117.0  debit  264.0   87.0     6.0     gmail.com           NaN  6.0  6.0  0.0  2.0  5.0  0.0  0.0  5.0  0.0  6.0  0.0   14.0  6.0   22.0   22.0   0.0   22.0   0.0 NaN NaN NaN   22.0   22.0  NaN  NaN  NaN   22.0  T  T  NaN  NaN  F    F    T    T  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  3.0  1.0  3.0   1.0  67.949997  183.850006  67.949997  183.850006  67.949997   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   

               V205  V206  V207  V208  V209  V210  V212  V213  V214  V215  V216  V217  V219  V220  V221  V222  V223  V224  V225  V226  V227  V228  V229  V231  V233  V234  V238  V239  V242  V243  V244  V245  V246  V247  V249  V251  V253  V256  V257  V258  V259  V261  V262  V263  V264  V265  V266  V267  V268  V270  V271  V272  V273  V274  V275  V276  V277  V278  V279  V280  V282  V283  V285  V287  V288  V289  V291  V292  V294  V303  V304       V306         V307       V308         V310       V312        V313        V314        V315  V317  V322  V323  V324  V326  V329  V331  V332  V333  V335  V336  V338  id_01  id_02  id_03  id_05  id_06  id_09  id_11 id_12  id_13  id_14 id_15  id_17  id_19  id_20 id_30 id_31  id_32 id_33 id_36 id_37 id_38 DeviceType DeviceInfo device_name device_version OS_id_30 version_id_30 browser_id_31 version_id_31 screen_width screen_height  had_id  
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
3663549         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   0.0   0.0   1.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.000000    47.950001   0.000000    47.950001   0.000000    0.000000    0.000000    0.000000   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN        NaN        NaN         NaN            NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
3663550         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   1.0   0.0   0.0   4.0   1.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.000000   280.000000  77.000000   280.000000  77.000000    0.000000    0.000000    0.000000   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN        NaN        NaN         NaN            NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
3663551         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   0.0   0.0   4.0   0.0   0.0   0.0   2.0   1.0   0.0   0.0   0.0   0.000000  1321.000000   0.000000  1058.000000   0.000000    0.000000    0.000000    0.000000   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN        NaN        NaN         NaN            NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
3663552         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   1.0   1.0   0.0   0.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.000000     0.000000   0.000000     0.000000   0.000000  282.540009  282.540009  282.540009   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN        NaN        NaN         NaN            NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN  
3663553         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   1.0   1.0   1.0   1.0   3.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0  67.949997   183.850006  67.949997   183.850006  67.949997   67.949997  183.850006   67.949997   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN    NaN   NaN    NaN    NaN    NaN   NaN   NaN    NaN   NaN   NaN   NaN   NaN        NaN        NaN         NaN            NaN      NaN           NaN           NaN           NaN          NaN           NaN     NaN

现在我们对交易金额,银行卡数据进行一个分组聚合

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
from tqdm import tqdm_notebook
from sklearn.metrics import roc_auc_score
from sklearn.preprocessing import LabelEncoder
import gc
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')

if __name__ == "__main__":

    def reduce_mem_usage(df):
        # 根据pandas列内容来选择合适的列类型
        start_mem = df.memory_usage().sum() / 1024**2
        print("Memory usage of dataframe is {:.2f} MB".format(start_mem))
        for col in df.columns:
            col_type = df[col].dtype
            if col_type != object:
                c_min = df[col].min()
                c_max = df[col].max()
                # 进行数值类型的内存压缩
                if str(col_type)[: 3] == 'int':
                    if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:
                        df[col] = df[col].astype(np.int8)
                    elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:
                        df[col] = df[col].astype(np.int16)
                    elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:
                        df[col] = df[col].astype(np.int32)
                    elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:
                        df[col] = df[col].astype(np.int64)
                else:
                    if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:
                        df[col] = df[col].astype(np.float16)
                    elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:
                        df[col] = df[col].astype(np.float32)
                    else:
                        df[col] = df[col].astype(np.float64)
            else:
                df[col] = df[col].astype('category')
        end_men = df.memory_usage().sum() / 1024**2
        print("Memory usage after optimization is {:.2f} MB".format(end_men))
        print("Decreased by {:.1f}".format(100 * (start_mem - end_men) / start_mem))
        return df

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", index_col='TransactionID')
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", index_col='TransactionID')
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", index_col='TransactionID')
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", index_col='TransactionID')
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # print(train_identity.select_dtypes(include=['object']))
    # print(test_identity.select_dtypes(include=['object']))
    # print(test_identity.columns[test_identity.columns.str.contains('id-')])
    test_identity = test_identity.rename(columns=lambda x: x.replace("id-", "id_"))

    def id_split(df):
        # 拆分
        df['device_name'] = df['DeviceInfo'].str.split('/', expand=True)[0]
        df['device_version'] = df['DeviceInfo'].str.split('/', expand=True)[0]
        df['OS_id_30'] = df['id_30'].str.split(' ', expand=True)[0]
        df['version_id_30'] = df['id_30'].str.split(' ', expand=True)[1]
        df['browser_id_31'] = df['id_31'].str.split(' ', expand=True)[0]
        df['version_id_31'] = df['id_31'].str.split(' ', expand=True)[1]
        df['screen_width'] = df['id_33'].str.split('x', expand=True)[0]
        df['screen_height'] = df['id_33'].str.split('x', expand=True)[1]
        df['id_34'] = df['id_34'].str.split(':', expand=True)[1]
        df['id_23'] = df['id_23'].str.split(':', expand=True)[1]
        # 聚合
        df.loc[df['device_name'].str.contains('SM', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('SAMSUNG', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('GT-', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('Moto G', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('Moto', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('moto', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('LG-', na=False), 'device_name'] = "LG"
        df.loc[df['device_name'].str.contains('rv:', na=False), 'device_name'] = "RV"
        df.loc[df['device_name'].str.contains('HUAWEI', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('ALE-', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('-L', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('Blade', na=False), 'device_name'] = "ZTE"
        df.loc[df['device_name'].str.contains('BLADE', na=False), 'device_name'] = "ZTE"
        df.loc[df['device_name'].str.contains('Linux', na=False), 'device_name'] = "Linux"
        df.loc[df['device_name'].str.contains('XT', na=False), 'device_name'] = "Sony"
        df.loc[df['device_name'].str.contains('HTC', na=False), 'device_name'] = "HTC"
        df.loc[df['device_name'].str.contains('ASUS', na=False), 'device_name'] = "Asus"
        df.loc[df.device_name.isin(df.device_name.value_counts()[df.device_name.value_counts() < 200].index), 'device_name'] = "Others"
        df['had_id'] = 1
        gc.collect()
        return df

    train_identity = id_split(train_identity)
    test_identity = id_split(test_identity)
    train = train_transaction.merge(train_identity, how='left', left_index=True, right_index=True)
    test = test_transaction.merge(test_identity, how='left', left_index=True, right_index=True)
    # 删除原始数据
    del train_identity, train_transaction, test_identity, test_transaction
    gc.collect()
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # 通过null importance筛选特征
    useful_features = ['TransactionAmt', 'ProductCD', 'card1', 'card2', 'card3', 'card4', 'card5', 'card6', 'addr1',
                       'addr2', 'dist1',
                       'P_emaildomain', 'R_emaildomain', 'C1', 'C2', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10', 'C11',
                       'C12', 'C13',
                       'C14', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D8', 'D9', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15',
                       'M2', 'M3',
                       'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V10', 'V11',
                       'V12', 'V13', 'V17',
                       'V19', 'V20', 'V29', 'V30', 'V33', 'V34', 'V35', 'V36', 'V37', 'V38', 'V40', 'V44', 'V45', 'V46',
                       'V47', 'V48',
                       'V49', 'V51', 'V52', 'V53', 'V54', 'V56', 'V58', 'V59', 'V60', 'V61', 'V62', 'V63', 'V64', 'V69',
                       'V70', 'V71',
                       'V72', 'V73', 'V74', 'V75', 'V76', 'V78', 'V80', 'V81', 'V82', 'V83', 'V84', 'V85', 'V87', 'V90',
                       'V91', 'V92',
                       'V93', 'V94', 'V95', 'V96', 'V97', 'V99', 'V100', 'V126', 'V127', 'V128', 'V130', 'V131', 'V138',
                       'V139', 'V140',
                       'V143', 'V145', 'V146', 'V147', 'V149', 'V150', 'V151', 'V152', 'V154', 'V156', 'V158', 'V159',
                       'V160', 'V161',
                       'V162', 'V163', 'V164', 'V165', 'V166', 'V167', 'V169', 'V170', 'V171', 'V172', 'V173', 'V175',
                       'V176', 'V177',
                       'V178', 'V180', 'V182', 'V184', 'V187', 'V188', 'V189', 'V195', 'V197', 'V200', 'V201', 'V202',
                       'V203', 'V204',
                       'V205', 'V206', 'V207', 'V208', 'V209', 'V210', 'V212', 'V213', 'V214', 'V215', 'V216', 'V217',
                       'V219', 'V220',
                       'V221', 'V222', 'V223', 'V224', 'V225', 'V226', 'V227', 'V228', 'V229', 'V231', 'V233', 'V234',
                       'V238', 'V239',
                       'V242', 'V243', 'V244', 'V245', 'V246', 'V247', 'V249', 'V251', 'V253', 'V256', 'V257', 'V258',
                       'V259', 'V261',
                       'V262', 'V263', 'V264', 'V265', 'V266', 'V267', 'V268', 'V270', 'V271', 'V272', 'V273', 'V274',
                       'V275', 'V276',
                       'V277', 'V278', 'V279', 'V280', 'V282', 'V283', 'V285', 'V287', 'V288', 'V289', 'V291', 'V292',
                       'V294', 'V303',
                       'V304', 'V306', 'V307', 'V308', 'V310', 'V312', 'V313', 'V314', 'V315', 'V317', 'V322', 'V323',
                       'V324', 'V326',
                       'V329', 'V331', 'V332', 'V333', 'V335', 'V336', 'V338', 'id_01', 'id_02', 'id_03', 'id_05',
                       'id_06', 'id_09',
                       'id_11', 'id_12', 'id_13', 'id_14', 'id_15', 'id_17', 'id_19', 'id_20', 'id_30', 'id_31',
                       'id_32', 'id_33',
                       'id_36', 'id_37', 'id_38', 'DeviceType', 'DeviceInfo', 'device_name', 'device_version',
                       'OS_id_30', 'version_id_30',
                       'browser_id_31', 'version_id_31', 'screen_width', 'screen_height', 'had_id']
    cols_to_drop = [col for col in train.columns if col not in useful_features]
    cols_to_drop.remove('isFraud')
    cols_to_drop.remove('TransactionDT')
    train = train.drop(cols_to_drop, axis=1)
    test = test.drop(cols_to_drop, axis=1)
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    columns_a = ['TransactionAmt', 'id_02', 'D15']
    columns_b = ['card1', 'card4', 'addr1']
    # 获取分组均值和方差
    for col_a in columns_a:
        for col_b in columns_b:
            for df in [train, test]:
                df[f'{col_a}_to_mean_{col_b}'] = df[col_a] / df.groupby([col_b])[col_a].transform('mean')
                df[f'{col_a}_to_std_{col_b}'] = df[col_a] / df.groupby([col_b])[col_a].transform('std')
    print(train[train.columns[train.columns.str.contains('_to_mean_')]])
    print(train[train.columns[train.columns.str.contains('_to_std_')]])
    print(test[test.columns[test.columns.str.contains('_to_mean_')]])
    print(test[test.columns[test.columns.str.contains('_to_std_')]])

运行结果

               TransactionAmt_to_mean_card1  TransactionAmt_to_mean_card4  TransactionAmt_to_mean_addr1  id_02_to_mean_card1  id_02_to_mean_card4  id_02_to_mean_addr1  D15_to_mean_card1  D15_to_mean_card4  D15_to_mean_addr1
TransactionID                                                                                                                                                                                                                  
2987000                            0.194640                      0.257761                      0.509556                  NaN                  NaN                  NaN           0.000000           0.000000           0.000000
2987001                            0.123777                      0.219054                      0.186032                  NaN                  NaN                  NaN           0.000000           0.000000           0.000000
2987002                            0.608150                      0.443070                      0.445765                  NaN                  NaN                  NaN           2.518583           1.865915           1.611525
2987003                            0.405133                      0.377679                      0.368830                  NaN                  NaN                  NaN           0.550272           0.720057           0.686169
2987004                            0.515612                      0.377679                      0.306863             0.764773             0.373295             0.627453                NaN                NaN                NaN
...                                     ...                           ...                           ...                  ...                  ...                  ...                ...                ...                ...
3577535                            0.505177                      0.367973                      0.374094                  NaN                  NaN                  NaN           0.307857           0.331718           0.330520
3577536                            0.163195                      0.298366                      0.263986                  NaN                  NaN                  NaN           0.000000           0.000000           0.000000
3577537                            0.258474                      0.233783                      0.226054                  NaN                  NaN                  NaN           0.000000           0.000000           0.000000
3577538                            0.953051                      0.883768                      0.759597                  NaN                  NaN                  NaN           0.108422           0.142714           0.127389
3577539                            1.333976                      2.114622                      1.513710                  NaN                  NaN                  NaN           0.008034           0.006487           0.005946

[590540 rows x 9 columns]
               TransactionAmt_to_std_card1  TransactionAmt_to_std_card4  TransactionAmt_to_std_addr1  id_02_to_std_card1  id_02_to_std_card4  id_02_to_std_addr1  D15_to_std_card1  D15_to_std_card4  D15_to_std_addr1
TransactionID                                                                                                                                                                                                         
2987000                           0.184566                     0.170233                     0.286941                 NaN                 NaN                 NaN          0.000000          0.000000          0.000000
2987001                           0.062995                     0.114212                     0.116132                 NaN                 NaN                 NaN          0.000000          0.000000          0.000000
2987002                           0.589241                     0.258544                     0.254240                 NaN                 NaN                 NaN          1.851016          1.541448          1.486472
2987003                           0.259447                     0.196917                     0.235658                 NaN                 NaN                 NaN          0.520531          0.558392          0.576638
2987004                           0.882933                     0.196917                     0.185845            1.753301            0.425884             0.67849               NaN               NaN               NaN
...                                    ...                          ...                          ...                 ...                 ...                 ...               ...               ...               ...
3577535                           0.363843                     0.214723                     0.226832                 NaN                 NaN                 NaN          0.269218          0.274035          0.276139
3577536                           0.402579                     0.155564                     0.158757                 NaN                 NaN                 NaN          0.000000          0.000000          0.000000
3577537                           0.203942                     0.121891                     0.132750                 NaN                 NaN                 NaN          0.000000          0.000000          0.000000
3577538                           0.662777                     0.460785                     0.498738                 NaN                 NaN                 NaN          0.106296          0.110672          0.109010
3577539                           0.899892                     1.102536                     0.962096                 NaN                 NaN                 NaN          0.005348          0.005031          0.004884

[590540 rows x 9 columns]
               TransactionAmt_to_mean_card1  TransactionAmt_to_mean_card4  TransactionAmt_to_mean_addr1  id_02_to_mean_card1  id_02_to_mean_card4  id_02_to_mean_addr1  D15_to_mean_card1  D15_to_mean_card4  D15_to_mean_addr1
TransactionID                                                                                                                                                                                                                  
3663549                            0.339332                      0.237290                      0.212321                  NaN                  NaN                  NaN           1.066067           1.925444           1.557394
3663550                            0.333494                      0.363919                      0.263375                  NaN                  NaN                  NaN           2.155230           2.984674           3.033737
3663551                            1.485504                      1.270002                      0.958090                  NaN                  NaN                  NaN           0.279881           0.456646           0.457103
3663552                            2.969653                      2.116298                      2.112283                  NaN                  NaN                  NaN           1.578683           1.139260           1.020278
3663553                            0.567364                      0.517674                      0.446060                  NaN                  NaN                  NaN           0.085873           0.109654           0.098978
...                                     ...                           ...                           ...                  ...                  ...                  ...                ...                ...                ...
4170235                            2.771274                      0.721308                      1.823339                  NaN                  NaN                  NaN           0.000000           0.000000           0.000000
4170236                            0.360082                      0.092739                           NaN             0.872946             1.220024                  NaN           0.243530           0.079748                NaN
4170237                            0.424053                      0.363919                      0.331890                  NaN                  NaN                  NaN           0.000000           0.000000           0.000000
4170238                            2.315186                      1.538928                      1.240594                  NaN                  NaN                  NaN           0.000000           0.000000           0.000000
4170239                            0.162994                      0.180816                           NaN             3.020494             3.673150                  NaN           0.000000           0.000000                NaN

[506691 rows x 9 columns]
               TransactionAmt_to_std_card1  TransactionAmt_to_std_card4  TransactionAmt_to_std_addr1  id_02_to_std_card1  id_02_to_std_card4  id_02_to_std_addr1  D15_to_std_card1  D15_to_std_card4  D15_to_std_addr1
TransactionID                                                                                                                                                                                                         
3663549                           0.260350                     0.129831                     0.124811                 NaN                 NaN                 NaN          1.665603          1.502141          1.450810
3663550                           0.134271                     0.199114                     0.150337                 NaN                 NaN                 NaN          2.047675          2.328502          2.300422
3663551                           1.895771                     0.694869                     0.633730                 NaN                 NaN                 NaN          0.339451          0.356253          0.351657
3663552                           1.913954                     1.157912                     1.169652                 NaN                 NaN                 NaN          1.130023          0.888797          0.901970
3663553                           0.310151                     0.277467                     0.250586                 NaN                 NaN                 NaN          0.075361          0.083425          0.080181
...                                    ...                          ...                          ...                 ...                 ...                 ...               ...               ...               ...
4170235                           2.786783                     0.386612                     2.026087                 NaN                 NaN                 NaN          0.000000          0.000000          0.000000
4170236                           0.369440                     0.049707                          NaN            1.422157            1.403943                 NaN          0.104885          0.060673               NaN
4170237                           0.280924                     0.199114                     0.219424                 NaN                 NaN                 NaN          0.000000          0.000000          0.000000
4170238                           2.640523                     0.824846                     0.698262                 NaN                 NaN                 NaN          0.000000          0.000000          0.000000
4170239                           0.091806                     0.098931                          NaN            3.254803            3.805817                 NaN          0.000000          0.000000               NaN

[506691 rows x 9 columns]

我们这里是为了看某些银行卡以及银行卡类型平均的交易金额和波动状况(方差)。我们知道对于交易金额来说一般都不会是正态分布,而是长尾分布,我们可以对其取对数,使之更加正态化。长尾分布又称为幂律分布、二八定律。比如80%的财富集中在20%的人手里,图书馆里20%的书可以满足80%的顾客。于是大家往往只关注在PDF图中最左面的20%的顾客,以期满足80%,如下图红色的部分,来实现效益的最大化。

长尾分布的数学定义为:就是说,当x很大的时候,很有可能x实际上更大。Pr指的是概率。

另外再提取一些我们需要用到的信息,对字符串字段进行编码以及对部分数值字段编码

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
from tqdm import tqdm_notebook
from sklearn.metrics import roc_auc_score
from sklearn.preprocessing import LabelEncoder
import gc
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')

if __name__ == "__main__":

    def reduce_mem_usage(df):
        # 根据pandas列内容来选择合适的列类型
        start_mem = df.memory_usage().sum() / 1024**2
        print("Memory usage of dataframe is {:.2f} MB".format(start_mem))
        for col in df.columns:
            col_type = df[col].dtype
            if col_type != object:
                c_min = df[col].min()
                c_max = df[col].max()
                # 进行数值类型的内存压缩
                if str(col_type)[: 3] == 'int':
                    if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:
                        df[col] = df[col].astype(np.int8)
                    elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:
                        df[col] = df[col].astype(np.int16)
                    elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:
                        df[col] = df[col].astype(np.int32)
                    elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:
                        df[col] = df[col].astype(np.int64)
                else:
                    if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:
                        df[col] = df[col].astype(np.float16)
                    elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:
                        df[col] = df[col].astype(np.float32)
                    else:
                        df[col] = df[col].astype(np.float64)
            else:
                df[col] = df[col].astype('category')
        end_men = df.memory_usage().sum() / 1024**2
        print("Memory usage after optimization is {:.2f} MB".format(end_men))
        print("Decreased by {:.1f}".format(100 * (start_mem - end_men) / start_mem))
        return df

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", index_col='TransactionID')
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", index_col='TransactionID')
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", index_col='TransactionID')
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", index_col='TransactionID')
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # print(train_identity.select_dtypes(include=['object']))
    # print(test_identity.select_dtypes(include=['object']))
    # print(test_identity.columns[test_identity.columns.str.contains('id-')])
    test_identity = test_identity.rename(columns=lambda x: x.replace("id-", "id_"))

    def id_split(df):
        # 拆分
        df['device_name'] = df['DeviceInfo'].str.split('/', expand=True)[0]
        df['device_version'] = df['DeviceInfo'].str.split('/', expand=True)[0]
        df['OS_id_30'] = df['id_30'].str.split(' ', expand=True)[0]
        df['version_id_30'] = df['id_30'].str.split(' ', expand=True)[1]
        df['browser_id_31'] = df['id_31'].str.split(' ', expand=True)[0]
        df['version_id_31'] = df['id_31'].str.split(' ', expand=True)[1]
        df['screen_width'] = df['id_33'].str.split('x', expand=True)[0]
        df['screen_height'] = df['id_33'].str.split('x', expand=True)[1]
        df['id_34'] = df['id_34'].str.split(':', expand=True)[1]
        df['id_23'] = df['id_23'].str.split(':', expand=True)[1]
        # 聚合
        df.loc[df['device_name'].str.contains('SM', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('SAMSUNG', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('GT-', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('Moto G', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('Moto', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('moto', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('LG-', na=False), 'device_name'] = "LG"
        df.loc[df['device_name'].str.contains('rv:', na=False), 'device_name'] = "RV"
        df.loc[df['device_name'].str.contains('HUAWEI', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('ALE-', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('-L', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('Blade', na=False), 'device_name'] = "ZTE"
        df.loc[df['device_name'].str.contains('BLADE', na=False), 'device_name'] = "ZTE"
        df.loc[df['device_name'].str.contains('Linux', na=False), 'device_name'] = "Linux"
        df.loc[df['device_name'].str.contains('XT', na=False), 'device_name'] = "Sony"
        df.loc[df['device_name'].str.contains('HTC', na=False), 'device_name'] = "HTC"
        df.loc[df['device_name'].str.contains('ASUS', na=False), 'device_name'] = "Asus"
        df.loc[df.device_name.isin(df.device_name.value_counts()[df.device_name.value_counts() < 200].index), 'device_name'] = "Others"
        df['had_id'] = 1
        gc.collect()
        return df

    train_identity = id_split(train_identity)
    test_identity = id_split(test_identity)
    train = train_transaction.merge(train_identity, how='left', left_index=True, right_index=True)
    test = test_transaction.merge(test_identity, how='left', left_index=True, right_index=True)
    # 删除原始数据
    del train_identity, train_transaction, test_identity, test_transaction
    gc.collect()
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # 通过null importance筛选特征
    useful_features = ['TransactionAmt', 'ProductCD', 'card1', 'card2', 'card3', 'card4', 'card5', 'card6', 'addr1',
                       'addr2', 'dist1',
                       'P_emaildomain', 'R_emaildomain', 'C1', 'C2', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10', 'C11',
                       'C12', 'C13',
                       'C14', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D8', 'D9', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15',
                       'M2', 'M3',
                       'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V10', 'V11',
                       'V12', 'V13', 'V17',
                       'V19', 'V20', 'V29', 'V30', 'V33', 'V34', 'V35', 'V36', 'V37', 'V38', 'V40', 'V44', 'V45', 'V46',
                       'V47', 'V48',
                       'V49', 'V51', 'V52', 'V53', 'V54', 'V56', 'V58', 'V59', 'V60', 'V61', 'V62', 'V63', 'V64', 'V69',
                       'V70', 'V71',
                       'V72', 'V73', 'V74', 'V75', 'V76', 'V78', 'V80', 'V81', 'V82', 'V83', 'V84', 'V85', 'V87', 'V90',
                       'V91', 'V92',
                       'V93', 'V94', 'V95', 'V96', 'V97', 'V99', 'V100', 'V126', 'V127', 'V128', 'V130', 'V131', 'V138',
                       'V139', 'V140',
                       'V143', 'V145', 'V146', 'V147', 'V149', 'V150', 'V151', 'V152', 'V154', 'V156', 'V158', 'V159',
                       'V160', 'V161',
                       'V162', 'V163', 'V164', 'V165', 'V166', 'V167', 'V169', 'V170', 'V171', 'V172', 'V173', 'V175',
                       'V176', 'V177',
                       'V178', 'V180', 'V182', 'V184', 'V187', 'V188', 'V189', 'V195', 'V197', 'V200', 'V201', 'V202',
                       'V203', 'V204',
                       'V205', 'V206', 'V207', 'V208', 'V209', 'V210', 'V212', 'V213', 'V214', 'V215', 'V216', 'V217',
                       'V219', 'V220',
                       'V221', 'V222', 'V223', 'V224', 'V225', 'V226', 'V227', 'V228', 'V229', 'V231', 'V233', 'V234',
                       'V238', 'V239',
                       'V242', 'V243', 'V244', 'V245', 'V246', 'V247', 'V249', 'V251', 'V253', 'V256', 'V257', 'V258',
                       'V259', 'V261',
                       'V262', 'V263', 'V264', 'V265', 'V266', 'V267', 'V268', 'V270', 'V271', 'V272', 'V273', 'V274',
                       'V275', 'V276',
                       'V277', 'V278', 'V279', 'V280', 'V282', 'V283', 'V285', 'V287', 'V288', 'V289', 'V291', 'V292',
                       'V294', 'V303',
                       'V304', 'V306', 'V307', 'V308', 'V310', 'V312', 'V313', 'V314', 'V315', 'V317', 'V322', 'V323',
                       'V324', 'V326',
                       'V329', 'V331', 'V332', 'V333', 'V335', 'V336', 'V338', 'id_01', 'id_02', 'id_03', 'id_05',
                       'id_06', 'id_09',
                       'id_11', 'id_12', 'id_13', 'id_14', 'id_15', 'id_17', 'id_19', 'id_20', 'id_30', 'id_31',
                       'id_32', 'id_33',
                       'id_36', 'id_37', 'id_38', 'DeviceType', 'DeviceInfo', 'device_name', 'device_version',
                       'OS_id_30', 'version_id_30',
                       'browser_id_31', 'version_id_31', 'screen_width', 'screen_height', 'had_id']
    cols_to_drop = [col for col in train.columns if col not in useful_features]
    cols_to_drop.remove('isFraud')
    cols_to_drop.remove('TransactionDT')
    train = train.drop(cols_to_drop, axis=1)
    test = test.drop(cols_to_drop, axis=1)
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    columns_a = ['TransactionAmt', 'id_02', 'D15']
    columns_b = ['card1', 'card4', 'addr1']
    # 获取分组均值和方差
    for col_a in columns_a:
        for col_b in columns_b:
            for df in [train, test]:
                df[f'{col_a}_to_mean_{col_b}'] = df[col_a] / df.groupby([col_b])[col_a].transform('mean')
                df[f'{col_a}_to_std_{col_b}'] = df[col_a] / df.groupby([col_b])[col_a].transform('std')
    # print(train[train.columns[train.columns.str.contains('_to_mean_')]])
    # print(train[train.columns[train.columns.str.contains('_to_std_')]])
    # print(test[test.columns[test.columns.str.contains('_to_mean_')]])
    # print(test[test.columns[test.columns.str.contains('_to_std_')]])
    # 将金额转化为对数
    train['TransactionAmt_Log'] = np.log(train['TransactionAmt'])
    test['TransactionAmt_Log'] = np.log(test['TransactionAmt'])
    # 提取金额的小数部分
    train['TransactionAmt_decimal'] = ((train['TransactionAmt'] - train['TransactionAmt'].astype('int')) * 1000).astype('int')
    test['TransactionAmt_decimal'] = ((test['TransactionAmt'] - test['TransactionAmt'].astype('int')) * 1000).astype('int')
    # 提取交易在一个星期的哪一天发生
    train['Transaction_day_of_week'] = np.floor((train['TransactionDT'] / (3600 * 24) - 1) % 7)
    test['Transaction_day_of_week'] = np.floor((test['TransactionDT'] / (3600 * 24) - 1) % 7)
    # 提取交易在一天中的哪个小时发生
    train['Transaction_hour'] = np.floor(train['TransactionDT'] / 3600) % 24
    test['Transaction_hour'] = np.floor(test['TransactionDT'] / 3600) % 24
    # 对强相关字段进行LabelEncoder编码
    for feature in ['id_02__id_20', 'id_02__D8', 'D11__DeviceInfo', 'DeviceInfo__P_emaildomain', 'P_emaildomain__C2',
                    'card2__dist1', 'card1__card5', 'card2__id_20', 'card5__P_emaildomain', 'addr1__card1']:
        f1, f2 = feature.split('__')
        train[feature] = train[f1].astype('str') + '_' + train[f2].astype('str')
        test[feature] = test[f1].astype('str') + '_' + test[f2].astype('str')
        le = LabelEncoder()
        le.fit(list(train[feature].astype('str').values) + list(test[feature].astype('str').values))
        train[feature] = le.transform(list(train[feature].astype('str').values))
        test[feature] = le.transform(list(test[feature].astype('str').values))
    # 对银行卡等字段进行count encoding编码
    for feature in ['card1', 'card2', 'card3', 'card4', 'card5', 'card6', 'id_36']:
        train[feature + '_count_full'] = train[feature].map(pd.concat([train[feature], test[feature]],
                                                                      ignore_index=True).value_counts(dropna=False))
        test[feature + '_count_full'] = test[feature].map(pd.concat([train[feature], test[feature]],
                                                                    ignore_index=True).value_counts(dropna=False))
    # 对id等字段进行count encoding编码
    for feature in ['id_01', 'id_31', 'id_33', 'id_36']:
        train[feature + '_count_dist'] = train[feature].map(train[feature].value_counts(dropna=False))
        test[feature + '_count_dist'] = test[feature].map(test[feature].value_counts(dropna=False))
    # 对邮箱域名进行聚合
    emails = {'gmail': 'google', 'att.net': 'att', 'twc.com': 'spectrum', 'scranton.edu': 'other',
              'optonline.net': 'other', 'hotmail.co.uk': 'microsoft', 'comcast.net': 'other', 'yahoo.com.mx': 'yahoo',
              'yahoo.fr': 'yahoo', 'yahoo.es': 'yahoo', 'charter.net': 'spectrum', 'live.com': 'microsoft',
              'aim.com': 'aol', 'hotmail.de': 'microsoft', 'centurylink.net': 'centurylink', 'gmail.com': 'google',
              'me.com': 'apple', 'earthlink.net': 'other', 'gmx.de': 'other', 'web.de': 'other', 'cfl.rr.com': 'other',
              'hotmail.com': 'microsoft', 'protonmail.com': 'other', 'hotmail.fr': 'microsoft',
              'windstream.net': 'other', 'outlook.es': 'microsoft', 'yahoo.co.jp': 'yahoo', 'yahoo.de': 'yahoo',
              'servicios-ta.com': 'other', 'netzero.net': 'other', 'suddenlink.net': 'other', 'roadrunner.com': 'other',
              'sc.rr.com': 'other', 'live.fr': 'microsoft', 'verizon.net': 'yahoo', 'msn.com': 'microsoft',
              'q.com': 'centurylink', 'prodigy.net.mx': 'att', 'frontier.com': 'yahoo', 'anonymous.com': 'other',
              'rocketmail.com': 'yahoo', 'sbcglobal.net': 'att', 'frontiernet.net': 'yahoo', 'ymail.com': 'yahoo',
              'outlook.com': 'microsoft', 'mail.com': 'other', 'bellsouth.net': 'other',
              'embarqmail.com': 'centurylink', 'cableone.net': 'other', 'hotmail.es': 'microsoft', 'mac.com': 'apple',
              'yahoo.co.uk': 'yahoo', 'netzero.com': 'other', 'yahoo.com': 'yahoo', 'live.com.mx': 'microsoft',
              'ptd.net': 'other', 'cox.net': 'other', 'aol.com': 'aol', 'juno.com': 'other', 'icloud.com': 'apple'}
    us_emails = ['gmail', 'net', 'edu']
    for c in ['P_emaildomain', 'R_emaildomain']:
        train[c + '_bin'] = train[c].map(emails)
        test[c + '_bin'] = test[c].map(emails)
        train[c + '_suffix'] = train[c].map(lambda x: str(x).split('.')[-1])
        test[c + '_suffix'] = test[c].map(lambda x: str(x).split('.')[-1])
        train[c + '_suffix'] = train[c + '_suffix'].map(lambda x: x if str(x) not in us_emails else 'us')
        test[c + '_suffix'] = test[c + '_suffix'].map(lambda x: x if str(x) not in us_emails else 'us')
    # 对所有的字符串字段进行labelEncoder编码
    for col in train.columns:
        if train[col].dtype == 'object':
            le = LabelEncoder()
            le.fit(list(train[col].astype('str').values) + list(test[col].astype('str').values))
            train[col] = le.transform(list(train[col].astype('str').values))
            test[col] = le.transform(list(test[col].astype('str').values))
    train = reduce_mem_usage(train)
    test = reduce_mem_usage(test)
    print(train.shape)
    print(test.shape)
    print(train.head())
    print(test.head())

运行结果

Memory usage of dataframe is 1542.85 MB
Memory usage after optimization is 451.40 MB
Decreased by 70.7
Memory usage of dataframe is 1322.76 MB
Memory usage after optimization is 400.29 MB
Decreased by 69.7
(590540, 337)
(506691, 336)
               isFraud  TransactionDT  TransactionAmt  ProductCD  card1  card2  card3  card4  card5  card6  addr1  addr2  dist1  P_emaildomain  R_emaildomain   C1   C2   C4   C5   C6   C7   C8   C9  C10  C11  C12   C13  C14     D1     D2    D3    D4   D5  D6  D8  D9   D10    D11  D12  D13  D14    D15  M2  M3  M4  M5  M6  M7  M8  M9   V3   V4   V5   V6   V7   V8   V9  V10  V11  V12  V13  V17  V19  V20  V29  V30  V33  V34  V35  V36  V37  V38  V40  V44  V45  V46  V47  V48  V49  V51  V52  V53  V54  V56  V58  V59  V60  V61  V62  V63  V64  V69  V70  V71  V72  V73  V74  V75  V76  V78  V80  V81  V82  V83  V84  V85  V87  V90  V91  V92  V93  V94  V95   V96   V97   V99  V100  V126    V127   V128   V130   V131  V138  V139  V140  V143   V145  V146  V147  V149    V150  V151  V152  V154  V156  V158     V159           V160  V161  V162  V163   V164    V165    V166  V167  V169  V170  V171  V172  V173  V175  V176  V177  V178  V180  V182  V184  V187  V188  V189  V195  V197  V200  V201  V202  V203  V204  \
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
2987000              0          86400            68.5          4  13926    NaN  150.0      1  142.0      1  315.0   87.0   19.0             32             32  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  0.0  2.0  0.0   1.0  1.0   14.0    NaN  13.0   NaN  NaN NaN NaN NaN  13.0   13.0  NaN  NaN  NaN    0.0   1   1   2   0   1   2   2   2  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0   1.0   0.0   0.0   0.0   0.0   117.0    0.0    0.0    0.0   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN      NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
2987001              0          86401            29.0          4   2755  404.0  150.0      2  102.0      1  325.0   87.0    NaN             16             32  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   0.0  NaN NaN NaN NaN   0.0    NaN  NaN  NaN  NaN    0.0   2   2   0   1   1   2   2   2  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0   0.0   0.0   0.0     0.0    0.0    0.0    0.0   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN      NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
2987002              0          86469            59.0          4   4663  490.0  150.0      4  166.0      2  330.0   87.0  287.0             36             32  1.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0  0.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   0.0  NaN NaN NaN NaN   0.0  315.0  NaN  NaN  NaN  315.0   1   1   0   0   0   0   0   0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.0   0.0   0.0   0.0     0.0    0.0    0.0    0.0   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN      NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
2987003              0          86499            50.0          4  18132  567.0  150.0      2  117.0      2  476.0   87.0    NaN             55             32  2.0  5.0  0.0  0.0  4.0  0.0  0.0  1.0  0.0  1.0  0.0  25.0  1.0  112.0  112.0   0.0  94.0  0.0 NaN NaN NaN  84.0    NaN  NaN  NaN  NaN  111.0   2   2   0   1   0   2   2   2  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  1.0  48.0  28.0  10.0   4.0  50.0  1758.0  925.0  354.0  135.0   NaN   NaN   NaN   NaN    NaN   NaN   NaN   NaN     NaN   NaN   NaN   NaN   NaN   NaN      NaN            NaN   NaN   NaN   NaN    NaN     NaN     NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
2987004              0          86506            50.0          1   4497  514.0  150.0      2  102.0      1  420.0   87.0    NaN             16             32  1.0  1.0  0.0  0.0  1.0  0.0  1.0  0.0  1.0  1.0  0.0   1.0  1.0    0.0    NaN   NaN   NaN  NaN NaN NaN NaN   NaN    NaN  NaN  NaN  NaN    NaN   2   2   3   2   2   2   2   2  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  0.0   0.0   0.0   0.0   0.0   0.0     0.0    0.0    0.0    0.0   0.0   0.0   0.0   6.0  140.0   0.0   0.0   0.0  1803.0  49.0  64.0   0.0   0.0   0.0  15560.0  169690.796875   0.0   0.0   0.0  515.0  5155.0  2840.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   1.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   

               V205  V206  V207  V208  V209  V210  V212  V213  V214  V215  V216  V217  V219  V220  V221  V222  V223  V224  V225  V226  V227  V228  V229  V231  V233  V234  V238  V239  V242  V243  V244  V245  V246  V247  V249  V251  V253  V256  V257  V258  V259  V261  V262  V263  V264  V265  V266  V267  V268  V270  V271  V272  V273  V274  V275  V276  V277  V278  V279  V280  V282  V283  V285  V287  V288  V289  V291  V292  V294  V303  V304  V306    V307   V308   V310   V312  V313  V314  V315    V317  V322  V323  V324  V326  V329  V331  V332  V333  V335  V336  V338  id_01    id_02  id_03  id_05  id_06  id_09  id_11  id_12  id_13  id_14  id_15  id_17  id_19  id_20  id_30  id_31  id_32  id_33  id_36  id_37  id_38  DeviceType  DeviceInfo  device_name  device_version  OS_id_30  version_id_30  browser_id_31  version_id_31  screen_width  screen_height  had_id  TransactionAmt_to_mean_card1  TransactionAmt_to_std_card1  TransactionAmt_to_mean_card4  TransactionAmt_to_std_card4  \
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
2987000         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   0.0   0.0   0.0   117.0    0.0    0.0    0.0   0.0   0.0   0.0   117.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN      2    NaN    NaN      3    NaN    NaN    NaN     86    136    NaN    461      2      2      2           2        2740           13            2419         6             49             31             43           247            216     NaN                      0.194580                     0.184566                      0.257812                     0.170288   
2987001         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0     0.0    0.0    0.0    0.0   0.0   0.0   0.0     0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN      2    NaN    NaN      3    NaN    NaN    NaN     86    136    NaN    461      2      2      2           2        2740           13            2419         6             49             31             43           247            216     NaN                      0.123779                     0.062995                      0.218994                     0.114197   
2987002         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0     0.0    0.0    0.0    0.0   0.0   0.0   0.0     0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN      2    NaN    NaN      3    NaN    NaN    NaN     86    136    NaN    461      2      2      2           2        2740           13            2419         6             49             31             43           247            216     NaN                      0.607910                     0.589241                      0.443115                     0.258545   
2987003         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   1.0  28.0   0.0   0.0  10.0   4.0   0.0   0.0   1.0   1.0  38.0   0.0   0.0  50.0  1758.0  925.0  354.0  135.0   0.0   0.0   0.0  1404.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN      NaN    NaN    NaN    NaN    NaN    NaN      2    NaN    NaN      3    NaN    NaN    NaN     86    136    NaN    461      2      2      2           2        2740           13            2419         6             49             31             43           247            216     NaN                      0.405029                     0.259447                      0.377686                     0.196899   
2987004         0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.0   1.0   1.0   0.0   1.0   1.0   0.0     0.0    0.0    0.0    0.0   0.0   0.0   0.0     0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0    0.0  70787.0    NaN    NaN    NaN    NaN  100.0      1    NaN -480.0      1  166.0  542.0  144.0      7    162   32.0    268      0      1      1           1        1565            7            1390         0             36             38             40           123             16     1.0                      0.515625                     0.882933                      0.377686                     0.196899   

               TransactionAmt_to_mean_addr1  TransactionAmt_to_std_addr1  id_02_to_mean_card1  id_02_to_std_card1  id_02_to_mean_card4  id_02_to_std_card4  id_02_to_mean_addr1  id_02_to_std_addr1  D15_to_mean_card1  D15_to_std_card1  D15_to_mean_card4  D15_to_std_card4  D15_to_mean_addr1  D15_to_std_addr1  TransactionAmt_Log  TransactionAmt_decimal  Transaction_day_of_week  Transaction_hour  id_02__id_20  id_02__D8  D11__DeviceInfo  DeviceInfo__P_emaildomain  P_emaildomain__C2  card2__dist1  card1__card5  card2__id_20  card5__P_emaildomain  addr1__card1  card1_count_full  card2_count_full  card3_count_full  card4_count_full  card5_count_full  card6_count_full  id_36_count_full  id_01_count_dist  id_31_count_dist  id_33_count_dist  id_36_count_dist  P_emaildomain_bin  P_emaildomain_suffix  R_emaildomain_bin  R_emaildomain_suffix  
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
2987000                            0.509766                     0.286941                  NaN                 NaN                  NaN                 NaN                  NaN                 NaN           0.000000          0.000000           0.000000          0.000000           0.000000          0.000000            4.226562                     500                      0.0               0.0        270749     259912               42                       8523               4686         31072          4648          9239                   508         29248                56             17587            956845              9524               309            267648            819269            446307            450258            517251            449555                  6                     6                  6                     6  
2987001                            0.186035                     0.116132                  NaN                 NaN                  NaN                 NaN                  NaN                 NaN           0.000000          0.000000           0.000000          0.000000           0.000000          0.000000            3.367188                       0                      0.0               0.0        270749     259912             3627                       8507               1589         18129         10936          5273                    43         32205              1338              5593            956845            347386             49491            267648            819269            446307            450258            517251            449555                  4                     0                  6                     6  
2987002                            0.445801                     0.254240                  NaN                 NaN                  NaN                 NaN                  NaN                 NaN           2.519531          1.851016           1.866211          1.541016           1.611328          1.486472            4.078125                       0                      0.0               0.0        270749     259912              248                       8527               5141         23016         12999          6795                   750         35560              1794             70496            956845            719649            102930            824959            819269            446307            450258            517251            449555                  5                     0                  6                     6  
2987003                            0.368896                     0.235658                  NaN                 NaN                  NaN                 NaN                  NaN                 NaN           0.550293          0.520531           0.720215          0.558594           0.686035          0.576638            3.912109                       0                      0.0               0.0        270749     259912             3627                       8544               6495         29394          9636          8638                   170         47566              7635             11287            956845            347386             47061            824959            819269            446307            450258            517251            449555                  9                     0                  6                     6  
2987004                            0.306885                     0.185845             0.764648             1.75293             0.373291            0.425781             0.627441            0.678711                NaN               NaN                NaN               NaN                NaN               NaN            3.912109                       0                      0.0               0.0        229802     221147             2452                       4375               1589         25501         12822          7169                    43         40560                30             27225            956845            347386             49491            267648            267353             19555              1061               544            134066                  4                     0                  6                     6  
               TransactionDT  TransactionAmt  ProductCD  card1  card2  card3  card4  card5  card6  addr1  addr2   dist1  P_emaildomain  R_emaildomain   C1   C2   C4   C5   C6   C7   C8   C9  C10  C11  C12    C13  C14     D1     D2    D3     D4    D5  D6  D8  D9    D10    D11  D12  D13  D14    D15  M2  M3  M4  M5  M6  M7  M8  M9   V3   V4   V5   V6   V7   V8   V9  V10  V11  V12  V13  V17  V19  V20  V29  V30  V33  V34  V35  V36  V37  V38  V40  V44  V45  V46  V47  V48  V49  V51  V52  V53  V54  V56  V58  V59  V60  V61  V62  V63  V64  V69  V70  V71  V72  V73  V74  V75  V76  V78  V80  V81  V82  V83  V84  V85  V87  V90  V91  V92  V93  V94  V95  V96  V97  V99  V100       V126        V127       V128        V130       V131  V138  V139  V140  V143  V145  V146  V147  V149  V150  V151  V152  V154  V156  V158  V159  V160  V161  V162  V163  V164  V165  V166  V167  V169  V170  V171  V172  V173  V175  V176  V177  V178  V180  V182  V184  V187  V188  V189  V195  V197  V200  V201  V202  V203  V204  \
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
3663549             18403224       31.953125          4  10409  111.0  150.0      4  226.0      2  170.0   87.0     1.0             16             32  6.0  6.0  0.0  3.0  4.0  0.0  0.0  6.0  0.0  5.0  1.0  115.0  6.0  419.0  419.0  27.0  398.0  27.0 NaN NaN NaN  418.0  203.0  NaN  NaN  NaN  409.0   1   0   3   2   0   1   1   1  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  0.0  1.0   0.0   0.000000   47.950001   0.000000   47.950001   0.000000   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
3663550             18403263       49.000000          4   4272  111.0  150.0      4  226.0      2  299.0   87.0     4.0              2             32  3.0  2.0  0.0  0.0  1.0  0.0  0.0  2.0  0.0  1.0  1.0   12.0  2.0  149.0  149.0   7.0  634.0   7.0 NaN NaN NaN  231.0  634.0  NaN  NaN  NaN  634.0   0   0   0   2   0   2   2   2  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  4.0  1.0  4.0   1.0   0.000000  280.000000  77.000000  280.000000  77.000000   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
3663551             18403310      171.000000          4   4476  574.0  150.0      4  226.0      2  472.0   87.0  2636.0             19             32  2.0  2.0  0.0  0.0  5.0  0.0  0.0  4.0  0.0  2.0  0.0   22.0  2.0  137.0  137.0  10.0   97.0  10.0 NaN NaN NaN  136.0  136.0  NaN  NaN  NaN   97.0   1   0   0   0   0   0   0   0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  2.0  2.0  0.0  0.0  1.0  2.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  5.0  0.0  3.0   0.0   0.000000  968.000000   0.000000  705.000000   0.000000   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
3663552             18403310      285.000000          4  10989  360.0  150.0      4  166.0      2  205.0   87.0    17.0             16             32  5.0  2.0  0.0  1.0  1.0  0.0  0.0  2.0  0.0  2.0  0.0    7.0  4.0   42.0   42.0  41.0  242.0  41.0 NaN NaN NaN  242.0  242.0  NaN  NaN  NaN  242.0   1   1   3   2   1   2   2   2  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  2.0  2.0  2.0  2.0  0.0  2.0  2.0  2.0  2.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   0.0   0.000000    0.000000   0.000000    0.000000   0.000000   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   
3663553             18403317       67.937500          4  18018  452.0  150.0      2  117.0      2  264.0   87.0     6.0             16             32  6.0  6.0  0.0  2.0  5.0  0.0  0.0  5.0  0.0  6.0  0.0   14.0  6.0   22.0   22.0   0.0   22.0   0.0 NaN NaN NaN   22.0   22.0  NaN  NaN  NaN   22.0   1   1   3   2   0   0   1   1  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  1.0  1.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0  1.0  3.0  1.0  3.0   1.0  67.949997  183.850006  67.949997  183.850006  67.949997   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   

               V205  V206  V207  V208  V209  V210  V212  V213  V214  V215  V216  V217  V219  V220  V221  V222  V223  V224  V225  V226  V227  V228  V229  V231  V233  V234  V238  V239  V242  V243  V244  V245  V246  V247  V249  V251  V253  V256  V257  V258  V259  V261  V262  V263  V264  V265  V266  V267  V268  V270  V271  V272  V273  V274  V275  V276  V277  V278  V279  V280  V282  V283  V285  V287  V288  V289  V291  V292  V294  V303  V304       V306         V307       V308         V310       V312      V313     V314      V315  V317  V322  V323  V324  V326  V329  V331  V332  V333  V335  V336  V338  id_01  id_02  id_03  id_05  id_06  id_09  id_11  id_12  id_13  id_14  id_15  id_17  id_19  id_20  id_30  id_31  id_32  id_33  id_36  id_37  id_38  DeviceType  DeviceInfo  device_name  device_version  OS_id_30  version_id_30  browser_id_31  version_id_31  screen_width  screen_height  had_id  TransactionAmt_to_mean_card1  TransactionAmt_to_std_card1  TransactionAmt_to_mean_card4  \
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
3663549         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   0.0   0.0   1.0   0.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.000000    47.950001   0.000000    47.950001   0.000000    0.0000    0.000    0.0000   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN      2    NaN    NaN      3    NaN    NaN    NaN     86    136    NaN    461      2      2      2           2        2740           13            2419         6             49             31             43           247            216     NaN                      0.339355                     0.260350                      0.237305   
3663550         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   1.0   0.0   0.0   4.0   1.0   0.0   0.0   1.0   1.0   0.0   0.0   0.0   0.000000   280.000000  77.000000   280.000000  77.000000    0.0000    0.000    0.0000   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN      2    NaN    NaN      3    NaN    NaN    NaN     86    136    NaN    461      2      2      2           2        2740           13            2419         6             49             31             43           247            216     NaN                      0.333496                     0.134271                      0.364014   
3663551         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   0.0   0.0   4.0   0.0   0.0   0.0   2.0   1.0   0.0   0.0   0.0   0.000000  1321.000000   0.000000  1058.000000   0.000000    0.0000    0.000    0.0000   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN      2    NaN    NaN      3    NaN    NaN    NaN     86    136    NaN    461      2      2      2           2        2740           13            2419         6             49             31             43           247            216     NaN                      1.485352                     1.895771                      1.269531   
3663552         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   0.0   0.0   1.0   1.0   0.0   0.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0   0.000000     0.000000   0.000000     0.000000   0.000000  282.5000  282.500  282.5000   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN      2    NaN    NaN      3    NaN    NaN    NaN     86    136    NaN    461      2      2      2           2        2740           13            2419         6             49             31             43           247            216     NaN                      2.968750                     1.913954                      2.117188   
3663553         NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   1.0   1.0   1.0   1.0   3.0   1.0   1.0   1.0   1.0   1.0   0.0   0.0   0.0  67.949997   183.850006  67.949997   183.850006  67.949997   67.9375  183.875   67.9375   0.0   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN      2    NaN    NaN      3    NaN    NaN    NaN     86    136    NaN    461      2      2      2           2        2740           13            2419         6             49             31             43           247            216     NaN                      0.567383                     0.310151                      0.517578   

               TransactionAmt_to_std_card4  TransactionAmt_to_mean_addr1  TransactionAmt_to_std_addr1  id_02_to_mean_card1  id_02_to_std_card1  id_02_to_mean_card4  id_02_to_std_card4  id_02_to_mean_addr1  id_02_to_std_addr1  D15_to_mean_card1  D15_to_std_card1  D15_to_mean_card4  D15_to_std_card4  D15_to_mean_addr1  D15_to_std_addr1  TransactionAmt_Log  TransactionAmt_decimal  Transaction_day_of_week  Transaction_hour  id_02__id_20  id_02__D8  D11__DeviceInfo  DeviceInfo__P_emaildomain  P_emaildomain__C2  card2__dist1  card1__card5  card2__id_20  card5__P_emaildomain  addr1__card1  card1_count_full  card2_count_full  card3_count_full  card4_count_full  card5_count_full  card6_count_full  id_36_count_full  id_01_count_dist  id_31_count_dist  id_33_count_dist  id_36_count_dist  P_emaildomain_bin  P_emaildomain_suffix  R_emaildomain_bin  R_emaildomain_suffix  
TransactionID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
3663549                           0.129883                      0.212280                     0.124811                  NaN                 NaN                  NaN                 NaN                  NaN                 NaN           1.066406          1.665603           1.925781          1.501953           1.557617          1.450810            3.464844                     949                      2.0               0.0        270749     259912              124                       8507               2401           807           482           372                  1375          5275               150             82537            956845            719649            553537            824959            819269            364784            370066            436020            369714                  4                     0                  6                     6  
3663550                           0.199097                      0.263428                     0.150337                  NaN                 NaN                  NaN                 NaN                  NaN                 NaN           2.154297          2.047675           2.984375          2.328125           3.033203          2.300422            3.892578                       0                      2.0               0.0        270749     259912              602                       8493                764          1646         12585           372                  1361         26707              2077             82537            956845            719649            553537            824959            819269            364784            370066            436020            369714                  0                     0                  6                     6  
3663551                           0.694824                      0.958008                     0.633730                  NaN                 NaN                  NaN                 NaN                  NaN                 NaN           0.279785          0.339451           0.456543          0.356201           0.457031          0.351657            5.140625                       0                      2.0               0.0        270749     259912               49                       8510               3027         29576         12800          8705                  1378         46662                83               131            956845            719649            553537            824959            819269            364784            370066            436020            369714                  5                     0                  6                     6  
3663552                           1.158203                      2.111328                     1.169652                  NaN                 NaN                  NaN                 NaN                  NaN                 NaN           1.579102          1.130023           1.139648          0.888672           1.020508          0.901970            5.652344                     949                      2.0               0.0        270749     259912              167                       8507               1945         15605          1163          4408                   730         14266              1924             26532            956845            719649            102930            824959            819269            364784            370066            436020            369714                  4                     0                  6                     6  
3663553                           0.277588                      0.446045                     0.250586                  NaN                 NaN                  NaN                 NaN                  NaN                 NaN           0.085876          0.075361           0.109680          0.083435           0.098999          0.080181            4.218750                     950                      2.0               0.0        270749     259912              142                       8507               2401         19935          9503          6030                   142         20532              2786              3014            956845            347386             47061            824959            819269            364784            370066            436020            369714                  4                     0                  6                     6  

最后我们使用交叉验证+集成学习LightGBM来完成训练和预测,并使用超参数的网格搜索,最后给出AUC的评分。

INPUT_PATH = "/Users/admin/Downloads/ieee-fraud-detection/"
import numpy as np
import pandas as pd
from tqdm import tqdm_notebook
from sklearn.metrics import roc_auc_score
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import KFold
import lightgbm as lgb
import gc
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')

if __name__ == "__main__":

    def reduce_mem_usage(df):
        # 根据pandas列内容来选择合适的列类型
        start_mem = df.memory_usage().sum() / 1024**2
        print("Memory usage of dataframe is {:.2f} MB".format(start_mem))
        for col in df.columns:
            col_type = df[col].dtype
            if col_type != object:
                c_min = df[col].min()
                c_max = df[col].max()
                # 进行数值类型的内存压缩
                if str(col_type)[: 3] == 'int':
                    if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:
                        df[col] = df[col].astype(np.int8)
                    elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:
                        df[col] = df[col].astype(np.int16)
                    elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:
                        df[col] = df[col].astype(np.int32)
                    elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:
                        df[col] = df[col].astype(np.int64)
                else:
                    if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:
                        df[col] = df[col].astype(np.float16)
                    elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:
                        df[col] = df[col].astype(np.float32)
                    else:
                        df[col] = df[col].astype(np.float64)
            else:
                df[col] = df[col].astype('category')
        end_men = df.memory_usage().sum() / 1024**2
        print("Memory usage after optimization is {:.2f} MB".format(end_men))
        print("Decreased by {:.1f}".format(100 * (start_mem - end_men) / start_mem))
        return df

    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    train_identity = pd.read_csv(INPUT_PATH + "train_identity.csv", index_col='TransactionID')
    train_transaction = pd.read_csv(INPUT_PATH + "train_transaction.csv", index_col='TransactionID')
    test_identity = pd.read_csv(INPUT_PATH + "test_identity.csv", index_col='TransactionID')
    test_transaction = pd.read_csv(INPUT_PATH + "test_transaction.csv", index_col='TransactionID')
    sub = pd.read_csv(INPUT_PATH + "sample_submission.csv")
    # print(train_identity.select_dtypes(include=['object']))
    # print(test_identity.select_dtypes(include=['object']))
    # print(test_identity.columns[test_identity.columns.str.contains('id-')])
    test_identity = test_identity.rename(columns=lambda x: x.replace("id-", "id_"))

    def id_split(df):
        # 拆分
        df['device_name'] = df['DeviceInfo'].str.split('/', expand=True)[0]
        df['device_version'] = df['DeviceInfo'].str.split('/', expand=True)[0]
        df['OS_id_30'] = df['id_30'].str.split(' ', expand=True)[0]
        df['version_id_30'] = df['id_30'].str.split(' ', expand=True)[1]
        df['browser_id_31'] = df['id_31'].str.split(' ', expand=True)[0]
        df['version_id_31'] = df['id_31'].str.split(' ', expand=True)[1]
        df['screen_width'] = df['id_33'].str.split('x', expand=True)[0]
        df['screen_height'] = df['id_33'].str.split('x', expand=True)[1]
        df['id_34'] = df['id_34'].str.split(':', expand=True)[1]
        df['id_23'] = df['id_23'].str.split(':', expand=True)[1]
        # 聚合
        df.loc[df['device_name'].str.contains('SM', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('SAMSUNG', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('GT-', na=False), 'device_name'] = "Samsung"
        df.loc[df['device_name'].str.contains('Moto G', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('Moto', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('moto', na=False), 'device_name'] = "Motorola"
        df.loc[df['device_name'].str.contains('LG-', na=False), 'device_name'] = "LG"
        df.loc[df['device_name'].str.contains('rv:', na=False), 'device_name'] = "RV"
        df.loc[df['device_name'].str.contains('HUAWEI', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('ALE-', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('-L', na=False), 'device_name'] = "Huawei"
        df.loc[df['device_name'].str.contains('Blade', na=False), 'device_name'] = "ZTE"
        df.loc[df['device_name'].str.contains('BLADE', na=False), 'device_name'] = "ZTE"
        df.loc[df['device_name'].str.contains('Linux', na=False), 'device_name'] = "Linux"
        df.loc[df['device_name'].str.contains('XT', na=False), 'device_name'] = "Sony"
        df.loc[df['device_name'].str.contains('HTC', na=False), 'device_name'] = "HTC"
        df.loc[df['device_name'].str.contains('ASUS', na=False), 'device_name'] = "Asus"
        df.loc[df.device_name.isin(df.device_name.value_counts()[df.device_name.value_counts() < 200].index), 'device_name'] = "Others"
        df['had_id'] = 1
        gc.collect()
        return df

    train_identity = id_split(train_identity)
    test_identity = id_split(test_identity)
    train = train_transaction.merge(train_identity, how='left', left_index=True, right_index=True)
    test = test_transaction.merge(test_identity, how='left', left_index=True, right_index=True)
    # 删除原始数据
    del train_identity, train_transaction, test_identity, test_transaction
    gc.collect()
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # 通过null importance筛选特征
    useful_features = ['TransactionAmt', 'ProductCD', 'card1', 'card2', 'card3', 'card4', 'card5', 'card6', 'addr1',
                       'addr2', 'dist1',
                       'P_emaildomain', 'R_emaildomain', 'C1', 'C2', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'C10', 'C11',
                       'C12', 'C13',
                       'C14', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D8', 'D9', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15',
                       'M2', 'M3',
                       'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V10', 'V11',
                       'V12', 'V13', 'V17',
                       'V19', 'V20', 'V29', 'V30', 'V33', 'V34', 'V35', 'V36', 'V37', 'V38', 'V40', 'V44', 'V45', 'V46',
                       'V47', 'V48',
                       'V49', 'V51', 'V52', 'V53', 'V54', 'V56', 'V58', 'V59', 'V60', 'V61', 'V62', 'V63', 'V64', 'V69',
                       'V70', 'V71',
                       'V72', 'V73', 'V74', 'V75', 'V76', 'V78', 'V80', 'V81', 'V82', 'V83', 'V84', 'V85', 'V87', 'V90',
                       'V91', 'V92',
                       'V93', 'V94', 'V95', 'V96', 'V97', 'V99', 'V100', 'V126', 'V127', 'V128', 'V130', 'V131', 'V138',
                       'V139', 'V140',
                       'V143', 'V145', 'V146', 'V147', 'V149', 'V150', 'V151', 'V152', 'V154', 'V156', 'V158', 'V159',
                       'V160', 'V161',
                       'V162', 'V163', 'V164', 'V165', 'V166', 'V167', 'V169', 'V170', 'V171', 'V172', 'V173', 'V175',
                       'V176', 'V177',
                       'V178', 'V180', 'V182', 'V184', 'V187', 'V188', 'V189', 'V195', 'V197', 'V200', 'V201', 'V202',
                       'V203', 'V204',
                       'V205', 'V206', 'V207', 'V208', 'V209', 'V210', 'V212', 'V213', 'V214', 'V215', 'V216', 'V217',
                       'V219', 'V220',
                       'V221', 'V222', 'V223', 'V224', 'V225', 'V226', 'V227', 'V228', 'V229', 'V231', 'V233', 'V234',
                       'V238', 'V239',
                       'V242', 'V243', 'V244', 'V245', 'V246', 'V247', 'V249', 'V251', 'V253', 'V256', 'V257', 'V258',
                       'V259', 'V261',
                       'V262', 'V263', 'V264', 'V265', 'V266', 'V267', 'V268', 'V270', 'V271', 'V272', 'V273', 'V274',
                       'V275', 'V276',
                       'V277', 'V278', 'V279', 'V280', 'V282', 'V283', 'V285', 'V287', 'V288', 'V289', 'V291', 'V292',
                       'V294', 'V303',
                       'V304', 'V306', 'V307', 'V308', 'V310', 'V312', 'V313', 'V314', 'V315', 'V317', 'V322', 'V323',
                       'V324', 'V326',
                       'V329', 'V331', 'V332', 'V333', 'V335', 'V336', 'V338', 'id_01', 'id_02', 'id_03', 'id_05',
                       'id_06', 'id_09',
                       'id_11', 'id_12', 'id_13', 'id_14', 'id_15', 'id_17', 'id_19', 'id_20', 'id_30', 'id_31',
                       'id_32', 'id_33',
                       'id_36', 'id_37', 'id_38', 'DeviceType', 'DeviceInfo', 'device_name', 'device_version',
                       'OS_id_30', 'version_id_30',
                       'browser_id_31', 'version_id_31', 'screen_width', 'screen_height', 'had_id']
    cols_to_drop = [col for col in train.columns if col not in useful_features]
    cols_to_drop.remove('isFraud')
    cols_to_drop.remove('TransactionDT')
    train = train.drop(cols_to_drop, axis=1)
    test = test.drop(cols_to_drop, axis=1)
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    columns_a = ['TransactionAmt', 'id_02', 'D15']
    columns_b = ['card1', 'card4', 'addr1']
    # 获取分组均值和方差
    for col_a in columns_a:
        for col_b in columns_b:
            for df in [train, test]:
                df[f'{col_a}_to_mean_{col_b}'] = df[col_a] / df.groupby([col_b])[col_a].transform('mean')
                df[f'{col_a}_to_std_{col_b}'] = df[col_a] / df.groupby([col_b])[col_a].transform('std')
    # print(train[train.columns[train.columns.str.contains('_to_mean_')]])
    # print(train[train.columns[train.columns.str.contains('_to_std_')]])
    # print(test[test.columns[test.columns.str.contains('_to_mean_')]])
    # print(test[test.columns[test.columns.str.contains('_to_std_')]])
    # 将金额转化为对数
    train['TransactionAmt_Log'] = np.log(train['TransactionAmt'])
    test['TransactionAmt_Log'] = np.log(test['TransactionAmt'])
    # 提取金额的小数部分
    train['TransactionAmt_decimal'] = ((train['TransactionAmt'] - train['TransactionAmt'].astype('int')) * 1000).astype('int')
    test['TransactionAmt_decimal'] = ((test['TransactionAmt'] - test['TransactionAmt'].astype('int')) * 1000).astype('int')
    # 提取交易在一个星期的哪一天发生
    train['Transaction_day_of_week'] = np.floor((train['TransactionDT'] / (3600 * 24) - 1) % 7)
    test['Transaction_day_of_week'] = np.floor((test['TransactionDT'] / (3600 * 24) - 1) % 7)
    # 提取交易在一天中的哪个小时发生
    train['Transaction_hour'] = np.floor(train['TransactionDT'] / 3600) % 24
    test['Transaction_hour'] = np.floor(test['TransactionDT'] / 3600) % 24
    # 对强相关字段进行LabelEncoder编码
    for feature in ['id_02__id_20', 'id_02__D8', 'D11__DeviceInfo', 'DeviceInfo__P_emaildomain', 'P_emaildomain__C2',
                    'card2__dist1', 'card1__card5', 'card2__id_20', 'card5__P_emaildomain', 'addr1__card1']:
        f1, f2 = feature.split('__')
        train[feature] = train[f1].astype('str') + '_' + train[f2].astype('str')
        test[feature] = test[f1].astype('str') + '_' + test[f2].astype('str')
        le = LabelEncoder()
        le.fit(list(train[feature].astype('str').values) + list(test[feature].astype('str').values))
        train[feature] = le.transform(list(train[feature].astype('str').values))
        test[feature] = le.transform(list(test[feature].astype('str').values))
    # 对银行卡等字段进行count encoding编码
    for feature in ['card1', 'card2', 'card3', 'card4', 'card5', 'card6', 'id_36']:
        train[feature + '_count_full'] = train[feature].map(pd.concat([train[feature], test[feature]],
                                                                      ignore_index=True).value_counts(dropna=False))
        test[feature + '_count_full'] = test[feature].map(pd.concat([train[feature], test[feature]],
                                                                    ignore_index=True).value_counts(dropna=False))
    # 对id等字段进行count encoding编码
    for feature in ['id_01', 'id_31', 'id_33', 'id_36']:
        train[feature + '_count_dist'] = train[feature].map(train[feature].value_counts(dropna=False))
        test[feature + '_count_dist'] = test[feature].map(test[feature].value_counts(dropna=False))
    # 对邮箱域名进行聚合
    emails = {'gmail': 'google', 'att.net': 'att', 'twc.com': 'spectrum', 'scranton.edu': 'other',
              'optonline.net': 'other', 'hotmail.co.uk': 'microsoft', 'comcast.net': 'other', 'yahoo.com.mx': 'yahoo',
              'yahoo.fr': 'yahoo', 'yahoo.es': 'yahoo', 'charter.net': 'spectrum', 'live.com': 'microsoft',
              'aim.com': 'aol', 'hotmail.de': 'microsoft', 'centurylink.net': 'centurylink', 'gmail.com': 'google',
              'me.com': 'apple', 'earthlink.net': 'other', 'gmx.de': 'other', 'web.de': 'other', 'cfl.rr.com': 'other',
              'hotmail.com': 'microsoft', 'protonmail.com': 'other', 'hotmail.fr': 'microsoft',
              'windstream.net': 'other', 'outlook.es': 'microsoft', 'yahoo.co.jp': 'yahoo', 'yahoo.de': 'yahoo',
              'servicios-ta.com': 'other', 'netzero.net': 'other', 'suddenlink.net': 'other', 'roadrunner.com': 'other',
              'sc.rr.com': 'other', 'live.fr': 'microsoft', 'verizon.net': 'yahoo', 'msn.com': 'microsoft',
              'q.com': 'centurylink', 'prodigy.net.mx': 'att', 'frontier.com': 'yahoo', 'anonymous.com': 'other',
              'rocketmail.com': 'yahoo', 'sbcglobal.net': 'att', 'frontiernet.net': 'yahoo', 'ymail.com': 'yahoo',
              'outlook.com': 'microsoft', 'mail.com': 'other', 'bellsouth.net': 'other',
              'embarqmail.com': 'centurylink', 'cableone.net': 'other', 'hotmail.es': 'microsoft', 'mac.com': 'apple',
              'yahoo.co.uk': 'yahoo', 'netzero.com': 'other', 'yahoo.com': 'yahoo', 'live.com.mx': 'microsoft',
              'ptd.net': 'other', 'cox.net': 'other', 'aol.com': 'aol', 'juno.com': 'other', 'icloud.com': 'apple'}
    us_emails = ['gmail', 'net', 'edu']
    for c in ['P_emaildomain', 'R_emaildomain']:
        train[c + '_bin'] = train[c].map(emails)
        test[c + '_bin'] = test[c].map(emails)
        train[c + '_suffix'] = train[c].map(lambda x: str(x).split('.')[-1])
        test[c + '_suffix'] = test[c].map(lambda x: str(x).split('.')[-1])
        train[c + '_suffix'] = train[c + '_suffix'].map(lambda x: x if str(x) not in us_emails else 'us')
        test[c + '_suffix'] = test[c + '_suffix'].map(lambda x: x if str(x) not in us_emails else 'us')
    # 对所有的字符串字段进行labelEncoder编码
    for col in train.columns:
        if train[col].dtype == 'object':
            le = LabelEncoder()
            le.fit(list(train[col].astype('str').values) + list(test[col].astype('str').values))
            train[col] = le.transform(list(train[col].astype('str').values))
            test[col] = le.transform(list(test[col].astype('str').values))
    train = reduce_mem_usage(train)
    test = reduce_mem_usage(test)
    # print(train.shape)
    # print(test.shape)
    # print(train.head())
    # print(test.head())
    # 将训练数据集按照时间排序,分离成数据矩阵和标签向量
    X = train.sort_values('TransactionDT').drop(['isFraud', 'TransactionDT'], axis=1)
    y = train.sort_values('TransactionDT')['isFraud']
    # 测试数据集没有标签,直接生成数据矩阵
    X_test = test.drop(['TransactionDT'], axis=1)
    # 删除train,test
    del train, test
    gc.collect()
    # 使用超参数的网格搜索
    params = {'num_leaves': 491,                            # 每个基学习器的最大叶子节点
              'min_child_weight': 0.03454472573214212,      # 子节点中最小的样本权重和。
                                                            # 如果一个叶子节点的样本权重和小于min_child_weight则拆分过程结束。
                                                            # 在现行回归模型中,这个参数是指建立每个模型所需要的最小样本数
              'feature_fraction': 0.3797454081646243,       # 特征选择率
              'bagging_fraction': 0.4181193142567742,       # 采样率
              'min_data_in_leaf': 106,                      # 一个叶子上数据的最小数量. 可以用来处理过拟合.
              'objective': 'binary',                        # 二分类问题
              'max_depth': -1,                              # 限制树模型的最大深度,这里无限制
              'learning_rate': 0.006883242363721497,        # 学习速率
              "boosting_type": "gbdt",                      # 增强类型
              "bagging_seed": 11,                           # bagging 随机数种子
              "metric": 'auc',                              # auc校验
              "verbosity": -1,                              # 表示是否输出中间信息
              'reg_alpha': 0.3899927210061127,              # L1 正则
              'reg_lambda': 0.6485237330340494,             # L2 正则
              'random_state': 47,
              }
    NFOLDS = 5
    # 将训练数据集分成5份进行交叉验证
    folds = KFold(n_splits=NFOLDS)
    columns = X.columns
    splits = folds.split(X, y)
    # 构建预测结果集
    y_preds = np.zeros(X_test.shape[0])
    y_oof = np.zeros(X.shape[0])
    score = 0
    feature_importances = pd.DataFrame()
    feature_importances['feature'] = columns
    # 对交叉验证分成的每一份训练数据集又划分成训练数据集和验证数据集进行集成学习
    for fold_n, (train_index, valid_index) in enumerate(splits):
        X_train, X_valid = X[columns].iloc[train_index], X[columns].iloc[valid_index]
        y_train, y_valid = y.iloc[train_index], y.iloc[valid_index]
        dtrain = lgb.Dataset(X_train, label=y_train)
        dvalid = lgb.Dataset(X_valid, label=y_valid)
        clf = lgb.train(params, dtrain, 10000, valid_sets=[dtrain, dvalid], verbose_eval=200, early_stopping_rounds=500)
        feature_importances[f'fold_{fold_n + 1}'] = clf.feature_importance()
        y_pred_valid = clf.predict(X_valid)
        y_oof[valid_index] = y_pred_valid
        print(f"Fold {fold_n + 1} | AUC: {roc_auc_score(y_valid, y_pred_valid)}")
        score += roc_auc_score(y_valid, y_pred_valid) / NFOLDS
        y_preds += clf.predict(X_test) / NFOLDS
        del X_train, X_valid, y_train, y_valid
        gc.collect()
    print(f"\nMean AUC = {score}")
    print(f"Out of folds AUC = {roc_auc_score(y, y_oof)}")

运行结果

Memory usage of dataframe is 1542.85 MB
Memory usage after optimization is 451.40 MB
Decreased by 70.7
Memory usage of dataframe is 1322.76 MB
Memory usage after optimization is 400.29 MB
Decreased by 69.7
Training until validation scores don't improve for 500 rounds
[200]	training's auc: 0.956125	valid_1's auc: 0.889638
[400]	training's auc: 0.977335	valid_1's auc: 0.903234
[600]	training's auc: 0.989102	valid_1's auc: 0.911348
[800]	training's auc: 0.994861	valid_1's auc: 0.915943
[1000]	training's auc: 0.997639	valid_1's auc: 0.918441
[1200]	training's auc: 0.998891	valid_1's auc: 0.919804
[1400]	training's auc: 0.999491	valid_1's auc: 0.920395
[1600]	training's auc: 0.999758	valid_1's auc: 0.92075
[1800]	training's auc: 0.999887	valid_1's auc: 0.920788
[2000]	training's auc: 0.99995	valid_1's auc: 0.920826
[2200]	training's auc: 0.99998	valid_1's auc: 0.920991
[2400]	training's auc: 0.999992	valid_1's auc: 0.921365
[2600]	training's auc: 0.999997	valid_1's auc: 0.921555
[2800]	training's auc: 0.999999	valid_1's auc: 0.921644
[3000]	training's auc: 0.999999	valid_1's auc: 0.921694
[3200]	training's auc: 1	valid_1's auc: 0.921724
[3400]	training's auc: 1	valid_1's auc: 0.921708
[3600]	training's auc: 1	valid_1's auc: 0.921783
[3800]	training's auc: 1	valid_1's auc: 0.921638
[4000]	training's auc: 1	valid_1's auc: 0.921541
Early stopping, best iteration is:
[3577]	training's auc: 1	valid_1's auc: 0.921824
Fold 1 | AUC: 0.9218238164322686
Training until validation scores don't improve for 500 rounds
[200]	training's auc: 0.95559	valid_1's auc: 0.909903
[400]	training's auc: 0.977158	valid_1's auc: 0.921719
[600]	training's auc: 0.989675	valid_1's auc: 0.93018
[800]	training's auc: 0.995509	valid_1's auc: 0.93418
[1000]	training's auc: 0.998147	valid_1's auc: 0.935868
[1200]	training's auc: 0.999221	valid_1's auc: 0.936952
[1400]	training's auc: 0.999663	valid_1's auc: 0.937307
[1600]	training's auc: 0.999853	valid_1's auc: 0.937485
[1800]	training's auc: 0.999939	valid_1's auc: 0.937453
[2000]	training's auc: 0.999975	valid_1's auc: 0.937376
Early stopping, best iteration is:
[1554]	training's auc: 0.999819	valid_1's auc: 0.937553
Fold 2 | AUC: 0.9375531039202226
Training until validation scores don't improve for 500 rounds
[200]	training's auc: 0.957157	valid_1's auc: 0.910372
[400]	training's auc: 0.97823	valid_1's auc: 0.923639
[600]	training's auc: 0.989952	valid_1's auc: 0.931364
[800]	training's auc: 0.995555	valid_1's auc: 0.934182
[1000]	training's auc: 0.998137	valid_1's auc: 0.935216
[1200]	training's auc: 0.999202	valid_1's auc: 0.935468
[1400]	training's auc: 0.999663	valid_1's auc: 0.935323
[1600]	training's auc: 0.999854	valid_1's auc: 0.935104
Early stopping, best iteration is:
[1134]	training's auc: 0.998953	valid_1's auc: 0.935501
Fold 3 | AUC: 0.9355012059924358
Training until validation scores don't improve for 500 rounds
[200]	training's auc: 0.95492	valid_1's auc: 0.925523
[400]	training's auc: 0.976688	valid_1's auc: 0.938901
[600]	training's auc: 0.98956	valid_1's auc: 0.947174
[800]	training's auc: 0.995411	valid_1's auc: 0.950576
[1000]	training's auc: 0.998085	valid_1's auc: 0.951844
[1200]	training's auc: 0.999184	valid_1's auc: 0.952362
[1400]	training's auc: 0.999659	valid_1's auc: 0.952445
[1600]	training's auc: 0.99986	valid_1's auc: 0.952392
[1800]	training's auc: 0.999943	valid_1's auc: 0.952204
Early stopping, best iteration is:
[1379]	training's auc: 0.999626	valid_1's auc: 0.952478
Fold 4 | AUC: 0.952477734481901
Training until validation scores don't improve for 500 rounds
[200]	training's auc: 0.956245	valid_1's auc: 0.902704
[400]	training's auc: 0.976948	valid_1's auc: 0.915983
[600]	training's auc: 0.989625	valid_1's auc: 0.924958
[800]	training's auc: 0.995343	valid_1's auc: 0.928624
[1000]	training's auc: 0.997981	valid_1's auc: 0.929766
[1200]	training's auc: 0.99913	valid_1's auc: 0.930232
[1400]	training's auc: 0.999628	valid_1's auc: 0.930224
[1600]	training's auc: 0.99984	valid_1's auc: 0.930277
Early stopping, best iteration is:
[1287]	training's auc: 0.999387	valid_1's auc: 0.930354
Fold 5 | AUC: 0.9303536548574841

Mean AUC = 0.9355419031368626
Out of folds AUC = 0.934575762176293

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部