找了很久都没有找到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分箱相关推荐

  1. 数据分箱——KS分箱/卡放分箱

    目录 1.前言 2.定义 3.分箱的用处 4.分箱方法 4.1 KS分箱 变量的KS值 Best-KS分箱 4.2卡方分箱 1.前言 评分卡建模在金融行业应用得比较广泛,比如对客户的信贷诚信度进行评分 ...

  2. 2017.10.16 装箱和拆箱﹑火星车的升级

    装箱和拆箱(jdk1.5之后的新特性) 基本类型包装器 区别:基本类型重效率﹑包装器重功能 例: package com.dayuanit.test;public class TestLesson00 ...

  3. 卡方分箱、KS分箱、最优IV分箱、树结构分箱、自定义分箱

    目录 分箱 分箱的概念 卡方分箱及代码实现 自定义分箱代码实现

  4. tarjan+拓扑序+差分--2018.10.16模拟赛T2

    题目: 阿天住的城市有 n 个政府部门,这些部门之间用了 m 条有向路径 连接了起来.有趣的是,每过一天这些路径都会变换方向,也就是说, 偶数的日子和奇数的日子的图是不同的. 阿天在社保局工作,可惜他 ...

  5. 2018.10.16【校内模拟】长者(主席树)(字符串哈希)

    解析: 其实题目已经提示了我们需要用什么数据结构 没睡醒的zxyoizxyoizxyoi考场上打了30pts30pts30pts暴力就直接滚粗了... 一听是正解主席树瞬间明白怎么做... 由于每次修 ...

  6. 2018.10.16 NOIP模拟 长者(主席树+hash)

    传送门 考试的时候开始sb的以为需要可持久化trietrietrie树,发现建树时空都是O(n2)O(n^2)O(n2)的. 然后发现由于每次只从原来的字符串改一个字符. 因此直接主席树维护区间has ...

  7. 【2018/10/16测试T3】长者

    [题目] 内网传送门 外网传送门 [分析] 30 pts:哈希+二分 可以用 s t r i n g string string 排序,也可以利用哈希做到 O ( l o g    n ) (log\ ...

  8. 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}^ ...

  9. 数据分箱5——Best-KS(Kolmogorov-Smirnov)分箱(有监督)

    ks是Kolmogorov-Smirnov,优势.理论部分可以参考:https://blog.titanwolf.in/a?ID=00950-78d07928-af47-4f50-a4a0-dc975 ...

  10. 转:Python数据分箱,计算woe,iv

    转自:https://zhuanlan.zhihu.com/p/38440477 https://www.cnblogs.com/wzdLY/p/9853209.html https://github ...

最新文章

  1. 最亲密接触DhtmlJScript开发细节
  2. ubuntu 配置samba
  3. 十分钟玩转 jQuery、实例大全
  4. php cdi_异步CDI事件
  5. 【工作经验分享】java图片转文字
  6. python两层装饰器_python装饰器
  7. linux下解压命令.7z,CentOS 下安装7-Zip 以及常用的解压命令
  8. 面试题目整理--逻辑
  9. ubuntu wireshark找不到网卡及开启IP转发
  10. Nginx与TCP协议的关系
  11. 色鬼色狼和色仙的区别
  12. 【详细解读】知识图谱的这一人工智能技术分支的概念、技术、应用、与发展趋势
  13. Microsoft Edge导出浏览历史记录
  14. BLE射频杂散源的由来,以及常见处理办法
  15. 腾讯云-语音指定模板-电话告警通知
  16. 破解压缩包密码-两行命令
  17. TypeScript技术知识整理
  18. 2023年2月的十篇深度学习论文推荐
  19. ubuntu 编译 找不到 -ly
  20. OneDrive两台电脑之间文件同步操作

热门文章

  1. String格式问题:将String格式请求方法时,String格式突然转化为对象的问题
  2. tenforflow版YOLOv3下VOC数据集的准备和训练
  3. 新手村-数组-P2141 珠心算测验
  4. 【SpringBoot】最通俗易懂的消息服务
  5. 职业规划 软件开发职业规划的10个建议
  6. 克隆硬盘后进不去系统_Windows 10克隆后ssd硬盘不能引导启动
  7. 致远OA表单自定义函数(明细表排名 )
  8. 太阳系行星运行图-java多媒体实验
  9. 【图形学】计算网格中两点连成的直线所经过的格子
  10. GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛