Python WOE的使用

这个WOE包是在做评分卡的时候从网上找到的,最新的为0.1.4版本,地址如下:

https://pypi.org/project/woe/#files

woe模块实现: 输入中会指名变量作为离散值还是连续值进行IV计算。

针对离散值,将每个值作为一个分组,计算个分组woe值,再计算IV值
针对连续值: 
计算将整体数据作为一个分组的IV值(命名为IV0)。
对所有值排序,根据最大,最小值平均划分100个取值区间(99个区间分割点,每个分割点可以将整体数据分割为左右两部分)
针对每个分割点,尝试将左右两部分作为两个分组,计算IV值(如果此种分组中,左右有一个分组中数据少于总体数据量的5%,不计算此分组IV)。获取99中分组方式中的最大IV值(IVmax)。
假如此最大IV值(IVmax)大于不分组IV值的101%(IV0),不进行分割。否则,以此分割点将数据整体分为左右两个组。每个组独立重新进行1步骤,进入下一轮循环。
根据记录所有分组点进行数据整体分组,计算IV。

下载完毕之后,打开压缩包,在example目录下找到config.csv并打开。

打开后就是对各个字段的设置,三个字段的意思我想分别是是否要分箱,是否是连续值,是否是模型特征。

配置完成后,运行HereWeGo.py的代码,注意配置训练数据的路径:

# -*- coding:utf-8 -*-
__author__ = 'boredbird'
import os
import pandas as pd
import woe.config as config
import woe.feature_process as fp
import woe.eval as eval

config_path = os.getcwd()+'\\woe\\examples\\config.csv'
data_path = os.getcwd()+'\\woe\\examples\\UCI_Credit_Card.csv'
cfg = config.config()
cfg.load_file(config_path,data_path)

for var in cfg.bin_var_list:
    # fill null
    cfg.dataset_train.loc[cfg.dataset_train[var].isnull(), (var)] = 0

# change feature dtypes
fp.change_feature_dtype(cfg.dataset_train, cfg.variable_type)

rst = []

# process woe transformation of continuous variables
for var in cfg.bin_var_list:
    rst.append(fp.proc_woe_continuous(cfg.dataset_train,var,cfg.global_bt,cfg.global_gt,cfg.min_sample,alpha=0.05))

# process woe transformation of discrete variables
for var in cfg.discrete_var_list:
    # fill null
    cfg.dataset_train.loc[cfg.dataset_train[var].isnull(), (var)] = 'missing'
    rst.append(fp.proc_woe_discrete(cfg.dataset_train,var,cfg.global_bt,cfg.global_gt,cfg.min_sample,alpha=0.05))

feature_detail = eval.eval_feature_detail(rst,'output_feature_detail.csv')

之后会输出一个output_feature_detail.csv文件,即分箱并计算iv的结果。

注意,字段不要用中文。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值