某农商行用户画像项目——模型构建部分

三、模型构建

模型挖掘用户标签:基于逻辑回归、LightGBM模型算法、结合业务人员经验进行数据建模,挖掘用户标签。即通过模型,进行变量筛选,挑选出对于目标变量(用户是否逾期)有意义的自变量。

3.1 贷款逾期数据分析

3.1.1 数据加载与预览

data = pd.read_excel('input/data_clean.xlsx')
data.head()
data.info()
data.describe()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
共56个字段,其中数值型字段27个;数据经过预处理步骤,已不存在缺失值,但数据中籍贯、政治面貌等类别型字段的缺失值初始填充为0,需要进行修正。

修补错误的填充

#修补错误的填充,将其恢复为缺失值
category_cols = ['客户类型', '性别', '民族','国籍', '是否农户', '最高学位', '职务', '有无子女', '住房情况', '是否有通讯地址', '是否有邮箱', '是否有传真', '是否有家庭电话', '是否有手机号码','是否有配偶手机号', '是否有公司电话', '还款来源', '计息周期', '还款方式','担保方式', '贷款形式','产品名称']
for col in category_cols:
    data[col] = data[col].replace(0, np.nan)
missingno.matrix(data[category_cols])

在这里插入图片描述

# 先过滤掉缺失大于90%的列
data_clean = data.dropna(thresh = len(data)*0.1, axis =1) 
# 按缺失率排序:从高到低
check_null = data_clean[category_cols].isnull().sum(axis = 0).sort_values(ascending = False)/float(len(data_clean[category_cols]))
check_null[check_null > 0][:20]
# 填充缺失值
data_clean['职务'].fillna('其他', inplace = True)
data_clean['最高学位'].fillna('其他', inplace = True)
data_clean['住房情况'].fillna('缺失', inplace = True)
data_clean['还款方式'].fillna('等额本息', inplace = True)
data_clean['是否农户'].fillna('否', inplace = True)
# 计算存在逾期的客户占比
data_clean[data_clean['逾期次数_median']!=0]['逾期次数_median'].count()/len(data_clean)

在这里插入图片描述
在这里插入图片描述
逾期客户占比约为12%。

3.1.2 探索性数据分析

3.1.2.1 描述性分析
3.1.2.1.1 类别型变量

个人信息类:
包括# ‘客户类型’, ‘性别’, ‘是否农户’, ‘最高学位’, ‘职务’, ‘有无子女’。

# 调整字段中的数据描述
data_clean['性别'].replace('未说明的性别', '未知的性别', inplace = True)
data_clean['职务'].replace('中级领导(行政局级以下领导或大公司中级管理人员)', '中级领导', inplace = True)
data_clean['职务'].replace('中级领导(行政级别局级以下领导或大公司中级管理人员)', '中级领导', inplace = True)
data_clean['职务'].replace('高级领导(行政局级及局级以上领导或大公司高级管理人员)', '高级领导', inplace = True)
data_clean['职务'].replace('高级领导(行政级别局级及局级以上领导或大公司高级管理人员)', '高级领导', inplace = True)
# 绘制饼图
plt_cols = ['客户类型', '性别', '是否农户', '最高学位', '职务', '有无子女']
plt.figure(figsize=[21,14], dpi=80) 
i = 1
# 切割图层并绘制2*3的6张子图片
for col in plt_cols:
    ax = plt.subplot(230+i)
    data_clean.groupby(data_clean[col]).count().标识码.plot(kind = 'pie', autopct='%1.1f%%', title=col)
    ax.legend(fontsize=10)
    i+=1

在这里插入图片描述
联系方式类:
包括’是否有配偶手机号’, ‘是否有通讯地址’, ‘是否有家庭电话’, ‘是否有手机号码’, ‘是否有公司电话’。

plt_cols = ['是否有配偶手机号', '是否有通讯地址', '是否有家庭电话', '是否有手机号码', '是否有公司电话']
plt.figure(figsize=[21,14], dpi=80) 
i = 1
# 切割图层并绘制2*3的6张子图片
for col in plt_cols:
    ax = plt.subplot(230+i)
    data_clean.groupby(data_clean[col]).count().标识码.plot(kind = 'pie', autopct='%1.1f%%', title=col)
    ax.legend(fontsize=10)
    i+=1

在这里插入图片描述
贷款情况类:
包括’住房情况’, ‘计息周期’, ‘还款方式’, ‘担保方式’, ‘贷款形式’, ‘产品名称’。

plt_cols = ['住房情况', '计息周期', '还款方式', '担保方式', '贷款形式', '产品名称']
plt.figure(figsize=[21,14], dpi=80) 
i = 1
# 切割图层并绘制2*3的6张子图片
for col in plt_cols: 
    ax = plt.subplot(230+i)
    data_clean.groupby(data_clean[col]).count().标识码.plot(kind = 'pie', autopct='%1.1f%%', title=col)
    ax.legend(fontsize=10)
    i+=1

在这里插入图片描述
数据显示,住房情况、产品名称字段类别较多,后期可根据对因变量的关系重新进行分箱。

有效变量总结:

category_cols = ['客户类型', '性别', '是否农户', '最高学位','职务', '有无子女','是否有通讯地址', '是否有家庭电话', '是否有手机号码','是否有配偶手机号', '是否有公司电话','住房情况', '计息周期', '还款方式', '担保方式', '贷款形式','产品名称']
missingno.matrix(data_clean[category_cols])

  • 1
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值