python的等深分箱实例


Posted in Python onNovember 22, 2019

背景

当前很多文章尝试过最优分箱,python上也有cut等方法进行等宽分箱。为了方便日后输出结果以及分箱要求。做一个简单的轮子以供大家日后使用。很多能用其他轮子的地方也没有多余出力,也不托大会比别人写的好。空间复杂度尽我所能。

方法展示

话不多说上代码。

以下为等深分箱以及encoding方法

# -*- coding: utf-8 -*-
"""
Created on Tue Jan 29 17:26:38 2019
@author: DamomWCG
"""
 
 
 
class Equal_depth_box:
  
 def equal_box(list, bin_num):
  '''
  param:
  list:you need bin box list
  bin_num: you want bin num
  '''
  bin_num = 10
  list.sort() #need sort can replace by others
  list_2 = list.copy()
  all_num = len(list_2)
  bin_sep = all_num/bin_num
  bin_sep = int(bin_sep)
  bin_list = []
  for i in range(1,bin_num):
   bin_dict = {}
   bin_dict = i*bin_sep
   bin_list.append(bin_dict)
  bin_real_list = []
  for i in bin_list:
   #print(i)
   bin_real_dict = {}
   bin_real_dict = list[i]
   bin_real_list.append(bin_real_dict)
  
  return bin_real_list
  
 def replace_box(list_1,replace_list):
  '''
  param:
  list_1:you need bin list
  replace_list: from equal box, replace the original list
  '''
  import pandas as pd
  list_max = max(list_1)
  list_min = min(list_1)
  replace_list.insert(0,list_min -1) #insert start
  replace_list.append(list_max + 1) #insert end
 
  list_2 = pd.cut(list_1, bins = replace_list,
      labels = range(len(replace_list) - 1)).tolist()
  return list_2
  
  
  
 
 
if __name__ == '__main__':
 
  import random
  
  list_1 = random.sample(range(1000), 134)
  
  print(list_1.sort())
  
  print('real_list: {}'.format(list_1[0:50]))
  
  replace_list = bin_class.equal_box(list_1, 10)
 
  list_2 = bin_class.replace_box(list_1, replace_list)
  
  print('encode_list: {}'.format(list_2[0:50]))

原始git地址

https://github.com/DamonWCG/Equal_depth_box/blob/master/Equal_depth_box

使用案例

本案例数据为,我进行过一步的最优分箱,来做一步等深分箱来进行横向对比。

原始数据形式

python的等深分箱实例

具体案例

# -*- coding: utf-8 -*-
"""
Created on Wed Jan 30 16:17:19 2019
@author: DamonWCG
"""
 
from Equal_depth_box import *
 
import pandas as pd
 
df = pd.read_csv('test.csv', encoding = 'gbk')
 
df.columns
####需要分箱的列
list_1 = df['deal_city_encoding'].tolist() #本方法是针对于list,所以对于series需要进行变换
 
####需要分箱的个数
replace_list = Equal_depth_box.equal_box(list_1, 5) 
 
 
####替代的名称
 
##因为列表排序所以需要重新排序对齐,这里我有空再想想其他办法
df.sort_values(by="deal_city_encoding", inplace = True)
 
list_2 = Equal_depth_box.replace_box(list_1, replace_list)
 
df['deal_city_bin_encoding'] = list_2
 
 
 
df.to_csv('df.csv', encoding = 'gbk', index = False)

本方法现阶段encoding形式为数字型。

分箱最终结果形式

python的等深分箱实例

需要注意,我得列表形式重新decode时候需要按照当前排序数组重新编码,这个问题我年后会解决。

以上这篇python的等深分箱实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅析python递归函数和河内塔问题
Apr 18 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
Python比较配置文件的方法实例详解
Jun 06 Python
Python 3 判断2个字典相同
Aug 06 Python
Python socket 套接字实现通信详解
Aug 27 Python
解决python web项目意外关闭,但占用端口的问题
Dec 17 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
学习python需要有编程基础吗
Jun 02 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
Python如何创建装饰器时保留函数元信息
Aug 07 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
基于python实现学生信息管理系统
Nov 22 #Python
基于python cut和qcut的用法及区别详解
Nov 22 #Python
python创建学生成绩管理系统
Nov 22 #Python
Python计算不规则图形面积算法实现解析
Nov 22 #Python
python实现连续变量最优分箱详解--CART算法
Nov 22 #Python
pycharm运行scrapy过程图解
Nov 22 #Python
python迭代器常见用法实例分析
Nov 22 #Python
You might like
php程序之die调试法 快速解决错误
2009/09/17 PHP
php数据库密码的找回的步骤
2011/01/12 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
PHP源码分析之变量的存储过程分解
2014/07/03 PHP
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
python3实现UDP协议的服务器和客户端
2017/06/14 Python
Django权限机制实现代码详解
2018/02/05 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
附答案的Java面试题
2012/11/19 面试题
购房意向书范本
2014/04/01 职场文书
现货白银电话营销话术
2015/05/29 职场文书
庆七一活动简报
2015/07/20 职场文书
校园运动会广播稿
2015/08/19 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android