1、处理信用卡数据异常值
1.训练要点
(1)熟悉信用卡的基本业务知识。
(2)掌握异常值的识别与处理方法。
2.需求说明
为了推进信用卡业务良性发展,减少坏账风险,各大银行都进行了信用卡客户风险识别的相关工作,建立了相应的客户风险识别模型。某银行因旧的风险识别模型随时间推移不再适应业务发展需求,需要重新进行风险识别模型构建。目前,银行给出的信用卡信数据说明如表7-11所示。
3、实现思路
(1)读取信用卡数据。
(2)丢弃逾期、呆账、强制停卡、退票、拒往记录为1、瑕疵户为2的记录。
(3)丢弃呆账、强制停卡、退票为1、拒往记录为2的记录。
(4)丢弃频率为5、刷卡金额不等于1的数据。
2、构造信用卡客户风险评价关键特征
- 训练要点
(1)掌握信用卡模型的原理。
(2)构建信用卡用户风险分析关键特征。
2.需求说明
在信用卡相关的征信工作中,主要从3个方向判定客户的信用等级。信用等级分别为客户的历史信用风险,主要为客户的历史信用情况,包括了客户是否有逾期、呆账和强制停卡记录等;客户的现阶段经济状况,综合考虑了借款余额、个人月收入、个人月开销、家庭月收入,以及月刷卡额这类和个人经济水平息息相关的特征;客户的未来经济收入以及目前收入的稳定情况,客户的职业不同、年龄不同、房产信息不同,那么客户的经济稳定情况是不同的。
3.实现思路及步骤
(1)根据特征瑕疵户、逾期、 呆账,强制停卡记录 退票、拒往记录,构建历史行为特征。
(2)根据特征借款余额、个人月收入、个人月开销、家庭月收入和月刷卡额,构建出经济风险情况特征。
(3)根据特征职业、年龄、住家,构建出收入风险情况特征。
(4)标准化历史行为、经济风险情况、收人风险情况特征。
3、构建K-Means聚类模型
1.训练要点
(1)掌握K-Means聚类算法的应用。
(2)掌握聚类算法结果分析的方法。 - 需求说明
构建信用卡高风险客户识别模型可以分为两部分:第一部分, 根据构建的3个特征对客户进行分群,对客户做聚类分群;第二部分,结合业务对每个客户群进行特征分析,分析其风险,并对每个客户群进行排名。
3.实现思路及步骤
(1)构建K-Means聚类模型,聚类数为5。
(2)训练K-Means聚类模型,并求出聚类中心、每类的用户数目。
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
std = np.load(“…/tmp/standard.npy”)
print(std[:5])
kmeans_model = KMeans(n_clusters=5,random_state=123)
fit_kmeans = kmeans_model.fit(std)
kmeans_model.cluster_centers_
查看样本类别标签
print(“聚类中心\n”,kmeans_model.cluster_centers_)
print(“样本的类别标签\n”,kmeans_model.labels_)
统计不同类别样本的数目
r1 = pd.Series(kmeans_model.labels_).value_counts()
print(‘最终每个类别的数目:\n’,r1)
#针对聚类结果绘制雷达图
import matplotlib.pyplot as plt
#设置中文显示
plt.rcParams[‘font.sans-serif’] = ‘SimHei’
plt.rcParams[‘axes.unicode_minus’] = False
#绘制雷达图
N = len(kmeans_model.cluster_centers_[0])
print(“N的值\n”,N)
#设置雷达图的角度,用于平分切开一个圆面
angles = np.linspace(0,2np.pi,N,endpoint=False)
print(“angles的值\n”,angles)
#为了使雷达图一圈封闭起来
angles = np.concatenate((angles,[angles[0]]))
print(“angles的值\n”,angles )
#绘图
fig = plt.figure(figsize=(7,7))
ax = fig.add_subplot(111,polar=True)
colors = [“r”,“g”,“b”,“y”,“k”]
lab = []
for i in range(len(kmeans_model.cluster_centers_)):
values = kmeans_model.cluster_centers_[i]
feture = [“历史行为特征”, “经济风险特征”, “收入风险特征”]
feture = np.concatenate((feture, [feture[0]]))
values = np.concatenate((values,[values[0]]))
print(“values的值\n”,values)
#绘制折线图
ax.plot(angles,values,colors[i],linestyle=“-”,linewidth=2,markersize=10)
#填充颜色
ax.fill(angles,values,alpha=0.5)
#添加每个特征的标签
ax.set_thetagrids(angles180/np.pi,feture,fontsize=15)
#添加标题
plt.title(“客户群特征分布图”)
#添加网格
ax.grid(True)
#添加图例
lab.append(“客户群”+str(i+1)+“,”+str(r1[i])+“人”)
plt.legend(lab)
plt.savefig(“…/tmp/客户群特征分布图.png”)
plt.show()