贷款违约预测是现代金融机构信用风险管理的基础。金融机构审批贷款时会收集客户的个人信息,包括年龄、收入、学历、职业、家庭情况和借贷历史等,在对各项信息综合考虑的基础上决定是否审批贷款。为了避免贷款违约,金融机构在对借款人发放贷款的时候必须对借款人的信用程度进行评估打分,预测贷款违约的概率,并做出是否发放贷款的判断。
本案例利用逻辑回归模型预测贷款人是否会发生违约行为。通过贷款数据(包括个人信息、财务状况和贷款状态等)来训练模型,通过模型分析贷款人的偿还能力,预测贷款申请人是否会发生违约。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| def test(x, y): lr = LogisticRegression(solver='liblinear') lr.fit(x, y) print('模型的准确率为{0}%'.format('%.2f'%(lr.score(x, y)*100))) x_train, x_test, y_train, y_test = train_test_split(x, y) y_pred = lr.predict(x_test) plt.figure(figsize=(14, 12)) plt.subplots_adjust(hspace=.3) plt.subplot(311) plt.scatter(range(len(x_test)), y_test+0.5, c='g', s=2, label='test') plt.scatter(range(len(x_test)), y_pred, c='r', s=2, label='pred') plt.title('测试结果') plt.yticks([0, 1], ['不违约', '违约']) plt.legend() plt.ylim([-0.5, 2.5]) data = pandas.concat([pandas.DataFrame(y_pred, columns=['pred']), pandas.DataFrame(y_test.tolist(), columns=['test'])], axis=1) data = data.stack().reset_index() data = data.drop(columns=[data.columns[0]]) data = data.rename(columns={data.columns[0]: 'labels', data.columns[1]: 'value'}) data['xzhou'] = 1 plt.subplot(312) plt.title('测试结果') seaborn.violinplot(data=data, x='xzhou', y='value', split=True, hue='labels') plt.yticks([0, 1], ['不违约', '违约']) plt.show() return lr
|