贷款利润最大化——利用随机森林和逻辑回归

分析目的

本文针对某信贷网站提供的2007-2011年贷款申请人的各项评估指标,建立关于信贷审批达到利润最大化模型,即对贷款人借贷状态(全额借贷、不予借贷)进行分类,从而实现贷款利润最大化,并采用不同算法进行评估。

一、数据采集

1、数据来源

数据来源,这个要注册登录,也可以直接点击下载数据链接下载。下载链接,提取码:nkvk

2、数据说明

本数据集共有四万多头数据,包含52个特征值,其中数据类型分别是 float64型30个, object型22个。本次数据分析主要是实现贷款利润最大化,所以不需这么多特征量,需要对其进行舍弃处理。

二、数据传输

将数据导入到PYTHON软件:

import pandas as pd
loans = pd.read_csv('LoanStats3a.csv', skiprows=1)
half_count = len(loans) / 2
loans = loans.dropna(thresh=half_count, axis=1)
loans = loans.drop(['desc', 'url'],axis=1)
loans.to_csv('loans_2007.csv', index=False)
loans = pd.read_csv("loans_2007.csv")
loans.info()

三、数据处理

1、查看数据

#loans.iloc[0]
loans.head(1)

在这里插入图片描述

2、清理无用特征值

了解各数据特征在业务中的含义。观察数据特征,主要清理与业务相关性不大的内容,重复特征值(等级下的另一个等级)以及预测后的特征值(批出的额度),此处的相关性大小凭业务知识进行粗略判断,如申请人的id,member_id,url,公司名emp_title等。

loans = loans.drop(["id", "member_id", "funded_amnt", "funded_amnt_inv", "grade", "sub_grade", "emp_title", "issue_d"], axis=1)
loans = loans.drop(["zip_code", "out_prncp", "out_prncp_inv", "total_pymnt", "total_pymnt_inv", "total_rec_prncp"], axis=1)
loans = loans.drop(["total_rec_int", "total_rec_late_fee", "recoveries", "collection_recovery_fee", "last_pymnt_d", "last_pymnt_amnt"], axis=1)
loans.head(1)

在这里插入图片描述
删除无关字段后,剩余32个字段

3、标签列分析

#统计不同还款状态对应的样本数量——标签类分析
loans['loan_status'].value_counts()

在这里插入图片描述
统计结果显示,共有9种借贷状态,其中我们仅分析"Fully Paid"(全额借款)和"Charged Off"(不借款)这两种状态。“Fully paid”和“Charged Off”(其他取值样本较少,是否贷款含义不明,直接舍弃),表示同意贷款和不同意贷款,将此特征作为及其学习的标签列,由于sklearn中各及其学习模型值接受数值类型的数据类型,所以我们将“loan_status”映射为数值类型。
将“loan_status”映射为数值类型:

loans = loans[(loans['loan_status'] == "Fully Paid") | (loans['loan_status'] == "Charged Off")]
status_replace = {
   
    "loan_status" : {
   
        "Fully Paid": 1,
        "Charged Off": 0,
    }
}
loans= loans.replace(status_replace)
loans.loan_status

4、清理只单一值的列

在进行数据分析时,部分字段对应的值只有一个,应删除这些无关字段

#查找只包含一个惟一值的列并删除
orig_columns = loans.columns
drop_columns = []
for col in orig_columns:
    col_series = loans[col].dropna().unique()
    #如果字段值都一样,删除该字段
    if len(col_series) == 1:
        drop_columns.append(col)
loans= loans.drop(drop_columns, axis=1)
print(drop_columns)
#将清洗后数据存入一个新的文件中
loans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值