信用评分python_信用评分卡模型在Python中实践(上)
信用标准评分卡模型开发及实现的文章,是标准的评分卡建模流程在R上的实现,非常不错,就想着能不能把开发流程在Python上实验一遍呢,经过一番折腾后,终于在Python上用类似的代码和包实现出来,由于Python和R上函数的差异以及样本抽样的差异,本文的结果与该文有一定的差异,这是意料之中的,也是正常,接下来就介绍建模的流程和代码实现。 #####代码中需要引用的包##### import numpy as np import pandas as pd from sklearn.utils import shuffle from sklearn.feature_selection import RFE, f_regression import scipy.stats.stats as stats import matplotlib.pyplot as plt from sklearn.linear_model import LogisticRegression import math
二、数据集准备
加州大学机器学习数据库中的german credit data,原本是存在R包”klaR”中的GermanCredit,我在R中把它加载进去,然后导出csv,最终导入Python作为数据集 ############## R ################# library(klaR) data(GermanCredit ,package="klaR") write.csv(GermanCredit,"/filePath/GermanCredit.csv")
>>> df_raw = pd.read_csv('/filePath/GermanCredit.csv') >>> df_raw.dtypes Unnamed: 0 int64 status object duration int64 credit_history object purpose object amount int64 savings object employment_duration object installment_rate int64 personal_status_sex object other_debtors object present_residence int64 property object age int64 other_installment_plans object housing object number_credits int64 job object people_liable int64 telephone object foreign_worker object credit_risk object
#提取样本训练集和测试集 def split_data(data, ratio=0.7, seed=None): if seed: shuffle_data = shuffle(data, random_state=seed) else: shuffle_data = shuffle(data, random_state=np.random.randint(10000)) train = shuffle_data.iloc[:int(ratio*len(shuffle_data)), ] test = shuffle_data.iloc[int(ratio*len(shuffle_data)):, ] return train, test #设置seed是为了保证下次拆分的结果一致 df_train,df_test = split_data(df_raw, ratio=0.7, seed=666) #将违约样本用“1”表示,正常样本用“0”表示。 credit_risk = [0 if x=='good' else 1 for x in df_train['credit_risk']] #credit_risk = np.where(df_train['credit_risk'] == 'good',0,1) data = df_train data['credit_risk']=credit_risk
三、定量指标筛选
#获取定量指标 quant_index = np.where(data.dtypes=='int64') quant_vars = np.array(data.columns)[quant_index] quant_vars = np.delete(quant_vars,0)
df_feature = pd.DataFrame(data,columns=['duration','amount','installment_rate','present_residence','age','number_credits','people_liable']) f_regression(df_feature,credit_risk) #输出逐步回归后得到的变量,选择P值<=0.1的变量 quant_model_vars = ["duration","amount","age","installment_rate"]
四、定性指标筛选
def woe(bad, good): return np.log((bad/bad.sum())/(good/good.sum())) all_iv = np.empty(len(factor_vars)) woe_dict = dict() #存起来后续有用 i = 0 for var in factor_vars: data_group = data.groupby(var)['credit_risk'].agg([np.sum,len]) bad = data_group['sum'] good = data_group['len']-bad woe_dict[var] = woe(bad,good) iv = ((bad/bad.sum()-good/good.sum())*woe(bad,good)).sum() all_iv[i] = iv i = i+1 high_index = np.where(all_iv>0.1) qual_model_vars = factor_vars[high_index]
至此,就完成了数据集的准备和指标的筛选,下面就要进行逻辑回归模型的建模了,请见
信用评分python_信用评分卡模型在Python中实践(上)相关推荐
- mysql 增删修模型_48.Python中ORM模型实现mysql数据库基本的增删改查操作
首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.my ...
- 1、pth转onnx模型、onnx转tensorrt模型、python中使用tensorrt进行加速推理(全网最全,不信你打我)
本文向所有亲们介绍在python当中配置tensorrt环境.使用tensorrt环境进行推理的教程,主要分为两大部分,第一部分环境配置,第二部分前向推理. 第一部分 环境配置 第一步:检查你的系统类 ...
- 信用评分python_信用评分卡(python)
目录 导入数据 缺失值和异常值处理 特征可视化 特征选择 模型训练 模型评估 模型结果转评分 计算用户总分 一.导入数据 #导入模块 importpandas as pdimportnumpy as ...
- 逻辑回归模型在R中实践
在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价.身高.GDP.学生成绩等,发现这些被预测的变量都属于连续型变量.然而有些情况下,被预测变量可能是二元变量,即成功或失败.流失或 ...
- perl转python_将行转换为perl或python中的列
我认为你可以用一张桌子做好,所以我会告诉你如何做你要求的和我认为好的. $name = ""; $data = {}; open(IN, "build.txt" ...
- if函数python_关于函数:如何在python中为一个if语句提供多个条件
本问题已经有最佳答案,请猛点这里访问. 所以我在用python 3.1.5编写一些代码,这些代码需要有多个条件才能发生某些事情.例子: 1 2 3 4 5def example(arg1, arg2, ...
- python金融风控评分卡模型和数据分析
python金融风控评分卡模型和数据分析微专业课(博主录制):http://dwz.date/b9vv 作者Toby:持牌照消费金融模型专家,和中科院,中科大教授保持长期项目合作:和同盾,聚信立等外部 ...
- python金融风控评分卡模型
python金融风控评分卡模型和数据分析微专业课(博主录制): [ http://dwz.date/b9vv ](https://study.163.com/series/1202875601.htm ...
- 风控必备的评分卡模型,TempoAI 10分钟搞定
8月20日,央行发布了<2020年第二季度支付体系运行总体情况>,数据显示,截至第二季度末,信用卡逾期半年未偿信贷总额838.84亿元,占信用卡应偿信贷余额的1.17%.与一季度相比,信用 ...
- 玩转大数据风控—利用评分卡模型实现信用评级
玩转大数据风控-利用评分卡模型实现信用评级 一.算法介绍 1. 什么是逻辑回归? 2. 逻辑回归为何逻辑 ? 3. 逻辑回归怎么回归? 二.构建流程 1.数据处理 1.1 数据清理 1.2 缺失值处理 ...
最新文章
- [SqlServer]数据库中自定义拆分字符串函数Split()
- javascript 控制键盘输入
- idea中build项目之后生成的target看不见
- oracle 将查询出的数据加1-10_PostgreSQL数据库跨库访问
- HDU 4267 A Simple Problem with Integers [树状数组]
- python软件下载对电脑配置要求-python3批量统计用户电脑配置
- 获取建模美赛O奖的方法和经验!文末资料放送
- 轨迹跟踪算法——Stanley法
- 服务器要使用两张网卡做bond0以实现网络冗余和提高带宽
- 2018校招 多益网络 人工智能及大数据研发工程师 面经
- maven pom.xml解析、命令说明、依赖传递、继承、聚合、properties、build、依赖范围、版本仲裁、profile
- Lamda C++11
- java乱码详解(java中byte与char的转换)
- 博通Broadcom SDK源码学习与开发11——Cable Modem DHCP管理
- rest php,使用php创建一个Rest Api
- Java学习 输出1-1000以内的质数
- 更深、更轻量级的Transformer!Facebook提出:DeLighT
- [Markdown]windows本地写markdown文件和上传图片到免费图床
- python输入数字比大小_Python练习实例47 | 比较任意两个数字的大小
- 无盘服务器网卡qos,qos