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使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
Jul 30 Python
Python应用领域和就业形势分析总结
May 14 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
使用python无账号无限制获取企查查信息的实例代码
Apr 17 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
Django前后端分离csrf token获取方式
Dec 25 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下清空字符串中的HTML标签的代码
2010/09/06 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
python中xrange用法分析
2015/04/15 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
python 除法保留两位小数点的方法
2018/07/16 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
快餐公司创业计划书
2014/04/29 职场文书
出生公证书
2015/01/23 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
2015年小学开学寄语
2015/02/27 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
如何利用golang运用mysql数据库
2022/03/13 Golang
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js