第一个项目决定用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列的取值分布如下:
EDUCATION1,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) 保存成的文件不会有索引列
网友评论