一次用户贷款风险预测比赛记录

本文记录了一次用户贷款风险预测比赛的过程,包括数据预处理、特征工程和模型训练。作者分析了不同表格的数据,探讨了如何处理缺失值、离散化和分箱,以及特征筛选的方法。在模型部分,主要使用了XGBoost和LightGBM,通过特征重要性进行初步筛选。最后,作者提到了模型融合策略对提升预测性能的影响。
摘要由CSDN通过智能技术生成

自己的一些总结和记录,积累经验

数据

包括:
申请人信息、申请件信息、历史信贷、社交圈四个表格。好久没做过这种表格类的比赛,pandas好多操作都忘了。
时间是将近13天,这类比赛还是用到xgb,lgb,之类的树模型比较多,深度模型最近有人通过GraphEmbedding对用户进行编码,将得到的向量表示,入模或是直接预测。我还没试过。

拿到数据以后

  • 看一下表格内字段的类型,int,float,object等等.1、有些模型对入模的数据类型有要求,2、依次看一下离散字段和连续字段,熟悉数据。
cols = data.dtypes.reset_index()
cols.columns =['var','dtype']
cols.groupby(['dtype'])['var'].count()

在这里插入图片描述

  • 看一下每一张表的数据量,表与表之间的关联关系(主键和外键),缺失值都还好,历史信贷表中有两个字段利率1/2缺失率90%以上,这样的字段就可以丢掉。
check_null = (data.isnull().sum(axis=0).sort_values(ascending=False)/float(len(data))).reset_index() #查看缺失值比例
check_null.columns=['index','percent']
print(check_null[check_null['percent'] > 0.2]) # 查看缺失比例大于20%的属性。
  • 看字段相关性,看一下目标变量和每个变量的相关性,可以按照这个顺序依次分析字段。
correlations = data.corr()['标签'].sort_values()
print('Most Positive Correlations:\n', correlations.tail(25))

对每个字段

  • 是否需要填充
    本次做的比较匆忙,然后由于用的的模型xgb/lgb可以处理缺失值,所以大部分字段都没有填补,只填补了一个相对来说和标签呈最负相关且缺失率50%以上的字段【外部评分】,具体做法是是根据每个申请的的若干个个人属性groupby后取均值来填补。填补完之后,对比一下填补字段的分布和原始字段的分布差异。
   group_by_list = ['教育程度','客户收入',......]
   tmp  = data[['申请编号','外部评分'] + group_by_list]
   tmp = tmp.fillna({'外部评分':-1})
   raw_data = tmp[tmp['外部评分'] != -1]
   fill_data = tmp[tmp['外部评分'] == -1]
   #只取有分的样本来填充,均值
   score_df = raw_data.groupby(group_by_list).外部评分.mean().reset_index()
   fill_score = pd.merge(fill_data[['申请编号'] + group_by_list ], score_df, on=group_by_list,how="left",suffixes=['_raw','_fill'])
   apply_score_df = pd.concat([raw
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值