背景
方法展示
話不多說上**。
以下為等深分箱以及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_real_list =
for i in bin_list:
#print(i)
bin_real_dict = {}
bin_real_dict = list[i]
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
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位址
使用案例
本案例資料為,我進行過一步的最優分箱,來做一步等深分箱來進行橫向對比。
原始資料形式
具體案例
# -*- 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形式為數字型。
分箱最終結果形式
需要注意,我得列表形式重新decode時候需要按照當前排序陣列重新編碼,這個問題我年後會解決。
python決策樹分箱 快速分箱方法
python 分箱的一種方法 2018.08.02 r語言中有smbining可以進行最優分箱,python中分箱如果既要考慮箱體個數,分箱後資訊量大小,也要考慮單調性等其他因素。這裡給出一種簡單的通過iv值來選擇如果分箱的方法。下面是按照分位數來分的,還可以按照卡房分箱,決策樹分箱等。參照toad...
python實現決策樹
決策樹是乙個 模型 他代表的是物件屬性與物件值之間的一種對映關係。樹中每個節點表示某個物件,而每個分叉路徑則代表某個可能的屬性值,而每個葉節點則對應從根節點到該葉節點所經歷的路徑所表示的物件的值。詳細關於決策樹的討論,請自行google。一 找到最優分割位置 1 針對樣本資料,需要在其不同的維度 d...
Python入門 決策樹
決策樹 decision tree 是一種樹形結構,其中每個內部節點表示乙個屬性上的測試,每個分支代表乙個測試輸出,每個葉節點代表一種類別。數學中的排列大家應該都學過,結果跟元素的順序有關,如果建立乙個列表,列出從1到20選擇3個數的所有排列,下面這兩項是不同的 5,8,10 8,5,10 舉個例子...