使用随机森林算法编写评分卡模型

2023-10-27

数据来源于信贷用户,数据量级为2W
在这里插入图片描述

首先读取数据

# 忽略警告
import warnings
warnings.filterwarnings('ignore')
# 导入常用库pandas/Numpy/matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# jupyter图形界面显示图片
%matplotlib inline
# jupyter显示所有特征
pd.set_option('display.max_columns',None)
# 显示全部输出
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
# 导入sklearn常用库
from sklearn.ensemble import RandomForestClassifier
from sklearn import cross_validation,metrics
# 设置本ipynb的工作目录
import os
os.chdir(r'E:\model\7379')
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)

导入数据

# 导入bill信息
data_bill = pd.read_excel('data_20191008.xlsx',sheet_name='bill')
# 定义年龄计算函数
from datetime import date
def calculate_age(born):
    today = date.today()
    return today.year - born.year - ((today.month, today.day) < (born.month, born.day))

就不一一导入数据了

# 连表
data_bill = pd.merge(left=data_bill,right=data_bxinyan,how='left',on='userid') #连1
data_bill = pd.merge(left=data_bill,right=data_btongdun,on='userid') # 连2
data_bill = pd.merge(left=data_bill,right=data_btc5,how='left',on='userid') # 连3
raw_data = pd.merge(left=data_bill,right=data_btc15,how='left',on='userid') # 连4

数据探索

raw_data.set_index('userid',drop=True,append=False,inplace=True,verify_integrity=False) 

在这里插入图片描述
1、查看数据大致分布
在这里插入图片描述
2、查看缺失值
在这里插入图片描述

# 删除缺失超过70%的特征
raw_data.drop(['overdue_date','max_overdue_amt','result_code'],axis=1,inplace=True)

定义一个输出行确实个数和缺失率的函数

def miss_row(data):
    """
    input:原始数据
    output:行的缺失个数和缺失率
    """
    row, col = data.shape
    row_miss = []
    row_total = []
    for i in range(row):
        w = data.iloc[i,:].isnull().sum() #第i行缺失的总数
        row_total.append(w)
        row_miss.append(w.sum()/col)
    row_miss = pd.Series(row_miss)
    row_total = pd.Series(row_total)
    row_miss.index = data.index #要保证row_miss和data的index相同
    row_percent = row_miss.sort_values(axis = 0,ascending = False)#对其进行排序
    row_total = row_total.sort_values(axis = 0,ascending = False)
    return row_total, row_percent
raw_data.dropna(thresh = len(raw_data.columns) * 0.8,axis=0,inplace=True) #删除缺失值大于80%的行数据
# 缺失值查看代码
import seaborn as sns # advanced vizs
import missingno as msno # missing values
%matplotlib inline
# missing values?
sns.set(style = "ticks")
msno.matrix(raw_data)

在这里插入图片描述

X = raw_data.iloc[:,1:]
y = raw_data['overdue']
# kde画密度图
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif'] = ['Simhei']
plt.style.use('seaborn')
# 查看每个数值特征的分布,
X.hist(bins=100,figsize=(20,16))
plt.show(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用随机森林算法编写评分卡模型 的相关文章

随机推荐

  • http接口实现跨域传递json实体(httpclient和jsonp方式都有)

    传 后台传 不知道谁写的发送post请求 很好用 param url param requestJson return throws Exception public static String sendPostJson String ur
  • springboot中restful风格请求的使用

    springboot中restful风格请求的使用 restful风格 springboot中的使用 1 创建html表单页面 2 在yml配置文件中开启rest表单支持 3 编写controller层及对应映射处理 4 启动服务 逐个访问
  • 猜数字游戏代码

    void Menu printf MENU n printf 1 PLAY n printf 0 EXIT n printf n void Game int randnum rand
  • Highstock中如何获取时间选择器的消息响应

    Highstock中的时间选择器在绘制时间相关的图像的时候很好用 最近有一个需求 获取时间选择器选择的时间范围用于后面的处理 查看了下官方文档 还真有相关事件的定义 afterSetExtremes 参考链接 https www highc
  • C++外观模式:Facade Pattern

    装饰者 不改变接口 但加入责任 适配器 将一个接口转换成另一个接口 外观 让接口更简单 外观模式 将一个或数个类的复杂的一切都隐藏在背后 只显露出一个干净美好的外观 外观模式提供了一个统一的接口 用来访问子系统中的一群接口 外观模式定义了一
  • 区块链技术核心概念与原理理解

    区块链的前世今生 说到区块链 就不得不提及密码朋克 密码朋克萌芽于1970年代 正式发起于1993年 认为保护个人隐私是自由社会的重要基石 反对政府 公司对个人隐私的侵害 政权的基础经常建立在控制数据上 通过此类控制可以害人 压迫人 或让人
  • C++图形开发(2):最基本的图形界面

    文章目录 1 构成 2 内容介绍 2 1 initgraph 2 2 getch 2 3 closegraph 3 总结 今天来简单介绍下最基本的图形界面 1 构成 输入以下内容并编译 这就是一个最基本的图形界面了 include
  • java for循环打印爱心

    心形 import java util Scanner class MyTest public static void main String args for int m 1 m lt 5 m for int n 6 n
  • anaconda虚拟环境搭建(python+opencv)

    一般安装和使用流程 1 安装Anaconda 打开命令行输入conda V检验是否安装及当前conda的版本 以下操作均在Anaconda Prompt命令框下进行 2 conda常用的命令 1 查看安装了哪些包 conda list 2
  • 2019牛客多校训练赛第五场A题 (思维题)

    题目描述 看不清图片可以右击图片 gt 复制图片地址 gt 浏览器新开一个标签页 粘贴此地址就可看大图 也可以右击图片 gt 在新标签页打开图片 题解 题意 给你一个整型x x lt 100 让你输出一个整型y y要满足3个条件 y 能被
  • Ubuntu 20.04无法连接网络(网络图标丢失),重启网络出现Failed to restart network-manager.service

    问题 失去网络图标 这里已经解决 sudo service NetworkManager stop sudo rm var lib NetworkManager NetworkManager state sudo service Netwo
  • 如何按需下载和安装Win10补丁

    如何按需下载和安装Win10补丁 一般我们都是通过系统自带的Windows更新来直接安装补丁 这种方式虽然方便 但是耗时久 而且更新体量也大 会占用很多空间 其实我们完全可以按需下载和安装 下面就给大家介绍方法 工具 原料 Thinkpad
  • Harmony系统更改手机IP

    在当今的互联网环境中 我们经常需要更改手机的IP地址来绕过限制或保护我们的隐私 虽然在一些操作系统上更改IP地址相对较容易 但在Harmony系统上 这可能会有些困难 因此 本文将分享一种在Harmony系统上免费更改手机IP地址的方法 在
  • 【Java SE】继承和多态(保姆级教学)

    点进来你就是我的人了博主主页 戳一戳 欢迎大佬指点 欢迎志同道合的朋友一起加油喔 目录 前言 一 继承 1 什么是继承 2 继承的优缺点 3 对继承的理解 4 方法的重写 5 继承中的构造方法的调用 6 包的声明和使用 7 四种权限修饰符
  • SM3算法设计原理

    SM3密码杂凑算法的描述 SM3密码杂凑算法采用Merkle Damgard结构 消息分组长度为512b 摘要长度256b 压缩函数状态256b 共64步操作步骤 SM3密码杂凑算法的初始值 SM3密码杂凑算法的初始值共256b 由8个32
  • 5G LAN技术专题详解(1)-目录

    相关文章会在公众号同步更新 最近工作忙 更新完公众号后 经常容易忘记再CSDN上再发 公众号上的文章更新的能快一些 各位同学有兴趣可以关注一下 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避
  • VMware Fusion Pro 12 Mac介绍(支持11.0 Big Sur出来啦)

    VMware Fusion 12 出来啦 完美支持macOS Big Sur系统 Fusion 12 包含几项新的更新和改进 包括 eGPU 兼容性 对使用 Kubernetes 构建的基于容器的应用程序的支持 DirectX 11 和 O
  • 计算机软件毕业设计项目源码大全

    给计算机软件相关专业的同学准备了许多毕设项目源码 大家可以下载 找到跟自己类似的 学习下别人的软件是如何做出来的 gitee下载地址 https gitee com chenshuai777 soft 部分截图如下 太多了我就不一一截出来了
  • 数字化项目建设管理难点分析与对策

    企业数字化发展主要以项目建设为依托 通过分阶段 有计划地实施一系列数字化项目 来不断夯实基础设施建设 持续深化业务系统应用 大力推进研发资源服务 稳步提升安全保密防护措施 日益完善运维管理体系 随着企业改革的不断深入 在加快数字化建设进程过
  • 使用随机森林算法编写评分卡模型

    数据来源于信贷用户 数据量级为2W 首先读取数据 忽略警告 import warnings warnings filterwarnings ignore 导入常用库pandas Numpy matplotlib import pandas