机器学习 -- 信用卡评分模型 -- 互联网金融风控

本文探讨了互联网金融中的风控问题,重点关注信用卡评分模型在风险控制中的作用。通过对申请评分卡的构建,利用数据预处理、探索性分析、特征选择、模型搭建和评估等步骤,旨在区分优质和潜在风险客户。虽然最终建模效果不尽如人意,AUC值为0.57,但通过过采样和参数调整,AUC提高到0.75,显示出模型性能的改善。
摘要由CSDN通过智能技术生成

互联网金融主要分为资金类和资产类。资金类主要是理财产品,吸储,主要指标是用户转化、留存和复投,重在客户运营。资产类主要是贷款,包括消费金融和现金贷,小额贷款属于此类,主要目的是用户转化,还款和风险控制,信用卡评分模型就属于风险控制。

信用评分作用是对贷款申请人(信用卡申请人)做风险评估分值的方法。 信用卡评分是以大量数据的统计结果为基础,根据客户提供的资料和历史数据对客户的信用进行评估,评分卡模型一般分为三类:A卡:申请评分卡,B卡:行为评分卡,C卡:催收评分卡。
本文主要涉及的为申请评分卡,申请评分卡的目标主要是区分好客户和坏客户,评分卡的结果为高分数的申请人意味着比低分数的申请人的风险低。
本文主要参考以下两篇文章,并对部分步骤进行了简化,本次最大的改进在于引入映射和矩阵计算,提高了效率:
文章1:https://blog.csdn.net/weixin_34021089/article/details/93744181?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
文章2:https://blog.csdn.net/baidu_38409988/article/details/100127904?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
建模的主要步骤为:
数据读取 ==》数据预处理 ==》探索性分析 ==》特征选择 ==》模型搭建 ==》模型评估 ==》分数计算

一、数据读取

import pandas as pd
import numpy as np

data = pd.read_csv('cs-training.csv',encoding='utf-8')
data.head()

二、数据预处理

data = data.drop_duplicates()
data.info()

#2.1 画箱线图 看异常情况
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

data.boxplot(column=['age'])
plt.show()

cols =['NumberOfTime30-59DaysPastDueNotWorse','NumberOfTime60-89DaysPastDueNotWorse','NumberOfTimes90DaysLate']
data.boxplot(column=cols)
plt.xticks(rotation=90,fontsize=8)
plt.show()

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

##2.2删除年龄大于90小于等于0的
data = data[(data['age']>0)&(data['age']<90)]

#2.3 删除逾期贷款异常值
data = data[data['NumberOfTime30-59DaysPastDueNotWorse']<90]

#3.1 删除NumberOfTime30-59DaysPastDueNotWorse空值
data = data.drop(data[data['NumberOfDependents'].isnull()].index)

#3.2MonthlyIncome 随机森林建模补空
#调整列的位置,将MonthlyIncome放在最前面
data = data[['MonthlyIncome','SeriousDlqin2yrs', 'RevolvingUtilizationOfUnsecuredLines', 'age',
       'NumberOfTime30-59DaysPastDueNotWorse', 'DebtRatio',
       'NumberOfOpenCreditLinesAndLoans', 'NumberOfTimes90DaysLate',
       'NumberRealEstateLoansOrLines', 'NumberOfTime60-89DaysPastDueNotWorse',
       'NumberOfDependents']]
#建模,选择最优参数并补充空值
from sklearn.ensemble import RandomForestRegressor
from sklearn.cross_validation import train_test_split,cross_val_score
from sklearn.model_selection import GridSearchCV

train = data[data['MonthlyIncome'].notnull()]
x_train,x_test,y_train,y_test= train_test_split(train.iloc[:,1:],train.iloc[:,0],test_size=0.25,random_state=22)
test = data[data['MonthlyIncome'].isnull()]
x_pre = test.iloc[:,1:]

def params_fit(x_train,y_train):
    s_list =[]
    i_list =[]
    for i in range(100,200,10):
        rf = RandomForestRegressor(n_estimators=i,random_state=42)
        scores = cross_val_score(rf,x_train,y_train,cv=3).mean()
        s_list.append(scores)
        i_list.append(i)
    max_scores =max(s_list)
    max_es = s_list
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天山下小花家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值