美文网首页
Kaggle---信用卡客户违约预测(1)

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

作者: fan的心情记录 | 来源:发表于2020-02-22 22:14 被阅读0次

    第一个项目决定用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)

          本文链接:https://www.haomeiwen.com/subject/zupcqhtx.html