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扫描IP段查看指定端口是否开放的方法
Jun 09 Python
python数据结构之列表和元组的详解
Sep 23 Python
Python装饰器原理与简单用法实例分析
Apr 29 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
python实现名片管理器的示例代码
Dec 17 Python
Python中if有多个条件处理方法
Feb 26 Python
python实现猜数游戏
Mar 27 Python
Pycharm连接远程服务器过程图解
Apr 30 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
详解pycharm配置python解释器的问题
Oct 15 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
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
javascript事件模型介绍
2016/05/31 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
Python使用爬虫猜密码
2016/02/19 Python
python实现字符串加密成纯数字
2019/03/19 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
python文件和文件夹复制函数
2020/02/07 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
Java基础知识面试题
2014/03/25 面试题
微信营销策划方案
2014/02/24 职场文书
带病坚持工作事迹
2014/05/03 职场文书
妇联主席先进事迹
2014/05/18 职场文书
测绘工程专业求职信
2014/07/15 职场文书
2015年安全生产月活动总结
2015/03/26 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python
Redis读写分离搭建的完整步骤
2021/09/14 Redis
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby