2018.10.16 best-ks分箱
找了很久都没有找到best-ks的分箱代码,自己写了一个。
# -*- coding: utf-8 -*-
"""
Created on Mon Oct 8 09:56:00 2018@author: Administrator2018.10.8
创建KS分箱实验
"""
import pandas as pddef best_ks_box(data,var_name,box_num):data = data[[var_name,'是否违约']]"""KS值函数"""def ks_bin(data_,limit):g = data_.ix[:,1].value_counts()[0]b = data_.ix[:,1].value_counts()[1]data_cro = pd.crosstab(data_.ix[:,0],data_.ix[:,1])data_cro[0] = data_cro[0]/gdata_cro[1] = data_cro[1]/bdata_cro_cum = data_cro.cumsum()ks_list = abs(data_cro_cum[1] - data_cro_cum[0])ks_list_index = ks_list.nlargest(len(ks_list)).index.tolist()for i in ks_list_index:data_1 = data_[data_.ix[:,0]<=i]data_2 = data_[data_.ix[:,0]>i]if len(data_1)>=limit and len(data_2)>=limit:breakreturn i#测试: ks_bin(data,data.shape[0]/7)"""区间选取函数"""def ks_zone(data_,list_):list_zone = list()list_.sort()n = 0for i in list_:m = sum(data_.ix[:,0]<=i) - nn = sum(data_.ix[:,0]<=i)list_zone.append(m)list_zone.append(50000-sum(list_zone)) max_index = list_zone.index(max(list_zone))if max_index == 0:rst = [data_.ix[:,0].unique().min(),list_[0]]elif max_index == len(list_):rst = [list_[-1],data_.ix[:,0].unique().max()]else:rst = [list_[max_index-1],list_[max_index]]return rst
# 测试: ks_zone(data_,[23]) #左开右闭data_ = data.copy()limit_ = data.shape[0]/20 #总体的5%""""循环体"""zone = list()for i in range(box_num-1):ks_ = ks_bin(data_,limit_)zone.append(ks_)new_zone = ks_zone(data,zone)data_ = data[(data.ix[:,0]>new_zone[0])&(data.ix[:,0]<=new_zone[1])]"""构造分箱明细表"""zone.append(data.ix[:,0].unique().max())zone.append(data.ix[:,0].unique().min())zone.sort()df_ = pd.DataFrame(columns=[0,1])for i in range(len(zone)-1):if i == 0:data_ = data[(data.ix[:,0]>=zone[i])&(data.ix[:,0]<=zone[i+1])]else:data_ = data[(data.ix[:,0]>zone[i])&(data.ix[:,0]<=zone[i+1])]data_cro = pd.crosstab(data_.ix[:,0],data_.ix[:,1])df_.loc['{0}-{1}'.format(data_cro.index.min(),data_cro.index.max())] = data_cro.apply(sum)return df_data = pd.read_excel('测试1.xlsx')
var_name = '年龄'
print(best_ks_box(data,var_name,5))
数据链接:https://pan.baidu.com/s/1XcyOhtGPuzL1oliyaHR1Mw 密码:us6c
2018.10.16 best-ks分箱相关推荐
- 数据分箱——KS分箱/卡放分箱
目录 1.前言 2.定义 3.分箱的用处 4.分箱方法 4.1 KS分箱 变量的KS值 Best-KS分箱 4.2卡方分箱 1.前言 评分卡建模在金融行业应用得比较广泛,比如对客户的信贷诚信度进行评分 ...
- 2017.10.16 装箱和拆箱﹑火星车的升级
装箱和拆箱(jdk1.5之后的新特性) 基本类型包装器 区别:基本类型重效率﹑包装器重功能 例: package com.dayuanit.test;public class TestLesson00 ...
- 卡方分箱、KS分箱、最优IV分箱、树结构分箱、自定义分箱
目录 分箱 分箱的概念 卡方分箱及代码实现 自定义分箱代码实现
- tarjan+拓扑序+差分--2018.10.16模拟赛T2
题目: 阿天住的城市有 n 个政府部门,这些部门之间用了 m 条有向路径 连接了起来.有趣的是,每过一天这些路径都会变换方向,也就是说, 偶数的日子和奇数的日子的图是不同的. 阿天在社保局工作,可惜他 ...
- 2018.10.16【校内模拟】长者(主席树)(字符串哈希)
解析: 其实题目已经提示了我们需要用什么数据结构 没睡醒的zxyoizxyoizxyoi考场上打了30pts30pts30pts暴力就直接滚粗了... 一听是正解主席树瞬间明白怎么做... 由于每次修 ...
- 2018.10.16 NOIP模拟 长者(主席树+hash)
传送门 考试的时候开始sb的以为需要可持久化trietrietrie树,发现建树时空都是O(n2)O(n^2)O(n2)的. 然后发现由于每次只从原来的字符串改一个字符. 因此直接主席树维护区间has ...
- 【2018/10/16测试T3】长者
[题目] 内网传送门 外网传送门 [分析] 30 pts:哈希+二分 可以用 s t r i n g string string 排序,也可以利用哈希做到 O ( l o g n ) (log\ ...
- 2018.10.16【校内模拟】膜法(组合数学)
解析: 其实就是一个组合数学式子,每一个询问我们要求的东西是∑i=0r−lCl+ik+i=∑i=0r−lCl+il−k\sum_{i=0}^{r-l}C_{l+i}^{k+i}=\sum_{i=0}^ ...
- 数据分箱5——Best-KS(Kolmogorov-Smirnov)分箱(有监督)
ks是Kolmogorov-Smirnov,优势.理论部分可以参考:https://blog.titanwolf.in/a?ID=00950-78d07928-af47-4f50-a4a0-dc975 ...
- 转:Python数据分箱,计算woe,iv
转自:https://zhuanlan.zhihu.com/p/38440477 https://www.cnblogs.com/wzdLY/p/9853209.html https://github ...
最新文章
- 最亲密接触DhtmlJScript开发细节
- ubuntu 配置samba
- 十分钟玩转 jQuery、实例大全
- php cdi_异步CDI事件
- 【工作经验分享】java图片转文字
- python两层装饰器_python装饰器
- linux下解压命令.7z,CentOS 下安装7-Zip 以及常用的解压命令
- 面试题目整理--逻辑
- ubuntu wireshark找不到网卡及开启IP转发
- Nginx与TCP协议的关系
- 色鬼色狼和色仙的区别
- 【详细解读】知识图谱的这一人工智能技术分支的概念、技术、应用、与发展趋势
- Microsoft Edge导出浏览历史记录
- BLE射频杂散源的由来,以及常见处理办法
- 腾讯云-语音指定模板-电话告警通知
- 破解压缩包密码-两行命令
- TypeScript技术知识整理
- 2023年2月的十篇深度学习论文推荐
- ubuntu 编译 找不到 -ly
- OneDrive两台电脑之间文件同步操作
热门文章
- String格式问题:将String格式请求方法时,String格式突然转化为对象的问题
- tenforflow版YOLOv3下VOC数据集的准备和训练
- 新手村-数组-P2141 珠心算测验
- 【SpringBoot】最通俗易懂的消息服务
- 职业规划 软件开发职业规划的10个建议
- 克隆硬盘后进不去系统_Windows 10克隆后ssd硬盘不能引导启动
- 致远OA表单自定义函数(明细表排名 )
- 太阳系行星运行图-java多媒体实验
- 【图形学】计算网格中两点连成的直线所经过的格子
- GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛