一、建立新的信用指标评估体系
二、计算新的指标值
1、以年消费总额这个新指标为例
年消费总额 = transCnt_mean * transAmt_mean
把计算结果作为新特征,加入作为新列加入data
# 计算客户年消费总额。
trans_total = data['transCnt_mean']*data['transAmt_mean']
# 将计算结果保留到小数点后六位。
trans_total =round(trans_total,6)
# 将结果加在data数据集中的最后一列,并将此列命名为trans_total。
data['trans_total'] = trans_total
print(data['trans_total'].head(20))
其他几个新指标做类似上述方法处理
三、构建风控模型
1、构建风控模型流程
2、分层采样
由于目标标签属于非平衡数据,数据集中违约客户远少于未违约的客户,为了更客观构建风控模型和评估效果,应该尽量使训练集和测试集中违约客户的比例一致,因此需要采用分层采样方法来划分训练集与测试集。
划分过程: 分层、随即划分、合并
可见,经过分层采样后,训练集与测试集中违约样本比例会保持一致。
from sklearn.model_selection import train_test_split
# 筛选data中的Default列的值,赋予变量y
y = data['Default'].values
# 筛选除去Default列的其他列的值,赋予变量x
x = data.drop(['Default'], axis=1).values
# 使用train_test_split方法,将x,y划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.2,random_state=33,stratify=y)
# 查看划分后的x_train与x_test的长度
len_x_train = len(x_train)
len_x_test = len(x_test)
print('x_train length: %d, x_test length: %d'%(len_x_train,len_x_test))
# 查看分层采样后的训练集中违约客户人数的占比
train_ratio = y_train.sum()/len(y_train)
print(train_ratio)
# 查看分层采样后的测试集中违约客户人数的占比
test_ratio = y_test.sum()/len(y_test)
print(test_ratio)
3、使用LogisticRegression建立风险评估模型
from sklearn.linear_model import LogisticRegression
# 调用模型,新建模型对象
lr = LogisticRegression()
# 带入训练集x_train, y_train进行训练
lr.fit(x_train,y_train)
# 对训练好的lr模型调用predict方法,带入测试集x_test进行预测
y_predict = lr.predict(x_test)
# 查看模型预测结果
p