发布时间:2025-12-11 01:26:56 浏览次数:1
以下为等深分箱以及encoding方法
#-*-coding:utf-8-*-"""CreatedonTueJan2917:26:382019@author:DamomWCG"""classEqual_depth_box:defequal_box(list,bin_num):'''param:list:youneedbinboxlistbin_num:youwantbinnum'''bin_num=10list.sort()#needsortcanreplacebyotherslist_2=list.copy()all_num=len(list_2)bin_sep=all_num/bin_numbin_sep=int(bin_sep)bin_list=[]foriinrange(1,bin_num):bin_dict={}bin_dict=i*bin_sepbin_list.append(bin_dict)bin_real_list=[]foriinbin_list:#print(i)bin_real_dict={}bin_real_dict=list[i]bin_real_list.append(bin_real_dict)returnbin_real_listdefreplace_box(list_1,replace_list):'''param:list_1:youneedbinlistreplace_list:fromequalbox,replacetheoriginallist'''importpandasaspdlist_max=max(list_1)list_min=min(list_1)replace_list.insert(0,list_min-1)#insertstartreplace_list.append(list_max+1)#insertendlist_2=pd.cut(list_1,bins=replace_list,labels=range(len(replace_list)-1)).tolist()returnlist_2if__name__=='__main__':importrandomlist_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
使用案例
本案例数据为,我进行过一步的最优分箱,来做一步等深分箱来进行横向对比。
原始数据形式
具体案例
#-*-coding:utf-8-*-"""CreatedonWedJan3016:17:192019@author:DamonWCG"""fromEqual_depth_boximport*importpandasaspddf=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_2df.to_csv('df.csv',encoding='gbk',index=False)本方法现阶段encoding形式为数字型。
分箱最终结果形式