1、处理信用卡数据异常值
1.训练要点
(1)熟悉信用卡的基本业务知识。
(2)掌握异常值的识别与处理方法。
2.需求说明
为了推进信用卡业务良性发展,减少坏账风险,各大银行都进行了信用卡客户风险识别的相关工作,建立了相应的客户风险识别模型。某银行因旧的风险识别模型随时间推移不再适应业务发展需求,需要重新进行风险识别模型构建。目前,银行给出的信用卡信数据说明如表7-11所示。
3、实现思路
(1)读取信用卡数据。
(2)丢弃逾期、呆账、强制停卡、退票、拒往记录为1、瑕疵户为2的记录。
(3)丢弃呆账、强制停卡、退票为1、拒往记录为2的记录。
(4)丢弃频率为5、刷卡金额不等于1的数据。
2、构造信用卡客户风险评价关键特征
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()
