Kaggle---信用卡客户违约预测(1)

第一个项目决定用kaggle中的预测数据集来进行入门。

将kaggle数据下载下来 ,共三个文件夹

sampleSubmission 文件是提交的格式案例。train表示训练集,而test文件是测试集。

这是比赛官网给出的25个变量含义解释:

ID-每个客户的ID

LIMIT_BAL-以新台币计的给定信用额度(包括个人和家庭/辅助信用额)

性别 -性别(1 =男性,2 =女性)

教育 -(1 =研究生院,2 =大学,3 =高中,4 =其他,5 =未知,6 =未知)

婚姻 -婚姻状况(1 =已婚,2 =单身,3 =其他)

年龄 -岁

PAY_0- 2005年9月的还款状态(-1 =正确付款,1 =延迟一个月,2 =延迟两个月,... 8 =延迟八个月,9 =延迟九个月,以上)

PAY_2- 2005年8月的还款状态(与上述金额相同)

PAY_3- 2005年7月的还款状态(与上述金额相同)

PAY_4- 2005年6月的还款状态(与上述金额相同)

PAY_5- 2005年5月的还款状态(与上述金额相同)

PAY_6- 2005年4月的还款状态(与上述金额相同)

BILL_AMT1- 2005年9月的对帐单金额(新台币)

BILL_AMT2- 2005年8月的对帐单金额(新台币)

BILL_AMT3- 2005年7月的帐单金额(新台币)

BILL_AMT4- 2005年6月的对帐单金额(新台币)

BILL_AMT5- 2005年5月的对帐单金额(新台币)

BILL_AMT6- 2005年4月的对帐单金额(新台币)

PAY_AMT1- 2005年9月的先前付款金额(新台币)

PAY_AMT2- 2005年8月的先前付款金额(新台币)

PAY_AMT3- 2005年7月的先前付款金额(新台币)

PAY_AMT4- 2005年6月的先前付款金额(新台币)

PAY_AMT5- 2005年5月的先前付款金额(新台币)

PAY_AMT6- 2005年4月的先前付款金额(新台币)

default.payment.next.month-默认付款(1 =是,0 =否)

default.payment.next.month这个变量即为预测变量。

由于测试集用来测试,因此测试集中不包含default.payment.next.month这个变量。

利用python来对数据进行简单了解。首先将数据导入如下:train,test分别为训练集和测试集.

        train=pd.read_csv("D:\working learning\jianshu\credit-card\Credit_Card_train.csv")

        test=pd.read_csv("D:\working learning\jianshu\credit-card\Credit_Card_test.csv")

        针对训练集来进行数据探索:

        train.head()可以用来观察前面几行数据

        train.info()来探查列的情况


可以看出没有空值,训练集共有2w条数据,无需对缺失值进行处理。

再对每个变量进行描述统计分析。

train.describe()返回了每列数据的基本描述统计情况:

id为客户标识,不纳入模型进行分析。主要对后面的变量进行分析。LIMIT_BAL-以新台币计的给定信用额度

train["LIMIT_BAL"].describe()


信用额度描述统计

可以看出,信用额度最低为1w,最高为100w

        train["SEX"].value_counts() 来观察sex的值的分布。女性的数量大于男性的数量。


1 =男性,2 =女性

对教育变量进行观测。1 =研究生院,2 =大学,3 =高中,4 =其他,5 =未知,6 =未知。因此,可以得知大部分为研究生和大学生。取值为0,5,6的样本没法解释,且样本量不大,因此,将这些样本都归为其他。

train.dropna(axis=0,how='all') #将全部为空的行进行删除

train.loc[train["EDUCATION"]==0,"EDUCATION"]=4

train.loc[train["EDUCATION"]==5,"EDUCATION"]=4

train.loc[train["EDUCATION"]==6,"EDUCATION"]=4

上述三串代码将 取值为0,5,6的值替换为了4 经过替换后,EDUCATION列的取值分布如下:


EDUCATION

1,2,3,4 分别为研究生 大学生 高中生 其他

将结婚变量做同样的处理,0替换为3 


MARRIAGE(1 =已婚,2 =单身,3 =其他)

观察年龄,最小年龄为21,最大年龄为79.没有异常值

AGE    

-1 =正确付款,1 =延迟一个月,2 =延迟两个月,... 8 =延迟八个月,9 =延迟九个月,以上

train[train["PAY_0"]==0] 显示PAY_0=0的数据行

观察数据发现PAY_系列变量存在-2以及0这个没法解释的值,把-2以及0归为一类,全部设置为0.我们认为这类数据没有代表性,作为其他特征来单独处理。

train.loc[train["PAY_6"]==-2,"PAY_6"]=0

对其他变量观察其分布后发现没有需要清洗的部分。把清洗好的数据进行保存,train.to_csv("train1.csv")

保存为train1的csv文件 便于下次读取分析。

train.to_csv("train2.csv",index=None) 保存成的文件不会有索引列

你可能感兴趣的:(Kaggle---信用卡客户违约预测(1))