• 特征工程之分箱


    最近比赛数据进入到特征组合的阶段,在进行特征组合前,要分箱处理,等深等距之类的方法太没有道理了,加上测试集的深度广度也不同。

    所以尝试了一种woe编码分箱的方法

    import woe.feature_process as fp
    import woe.eval as eval
    
    dataset_train=pd.read_csv('E:/比赛/公积金逾期预测-数据/train.csv')
    dataset_test=pd.read_csv('E:/比赛/公积金逾期预测-数据/test.csv')
    #省略其他处理过程
    #woe分箱
    dataset_train.rename(columns={'label':'target'},inplace=True)#数据中必须有一列名为‘target’的列,在这里改了一下列名
    civ_list=[]
    civ = fp.proc_woe_discrete(dataset_train, 'DWJJLX', 2757, 37243, 0.05*len(dataset_train), alpha=0.5)#对离散特征进行分箱
    civ_list.append(civ)
    civ_df = eval.eval_feature_detail(civ_list)
    civ_df#输出分箱结果
    dataset_train['DWJJLX'] = fp.woe_trans(dataset_train['DWJJLX'], civ)#woe赋值

     

     输出结果上表所示

    分箱过程

    核心函数主要是freature_process.proc_woe_discrete()与freature_process.proc_woe_continuous(),分别用于计算连续变量与离散变量的woe。它们的输入形式相同:

    proc_woe_discrete(df,var,global_bt,global_gt,min_sample,alpha=0.01)

    proc_woe_continuous(df,var,global_bt,global_gt,min_sample,alpha=0.01)

    输入:

    df: DataFrame,要计算woe的数据,必须包含'target'变量,且变量取值为{0,1}

    var:要计算woe的变量名

    global_bt:全局变量bad total。df的正样本数量

    global_gt:全局变量good total。df的负样本数量

    min_sample:指定每个bin中最小样本量,一般设为样本总量的5%。

    alpha:用于自动计算分箱时的一个标准,默认0.01.如果iv_划分>iv_不划分*(1+alpha)则划分。

    输出:一个自定义的InfoValue类的object,包含了分箱的一切结果信息。

    打印分箱结果:

    eval.eval_feature_detail(Info_Value_list,out_path=False)

    输入:

    Info_Value_list:存储各变量分箱结果(proc_woe_continuous/discrete的返回值)的List.

    out_path:指定的分箱结果存储路径,输出为csv文件

    特征转换:

    得到分箱及woe,iv结果后,对原数据进行woe转换,其实就是用woe值去替换原来的。主要用以下函数

    woe_trans(dvar,civ): replace the var value with the given woe value

    输入:

    dvar: 要转换的变量,Series

    civ: proc_woe_discrete或proc_woe_discrete输出的分箱woe结果,自定义的InfoValue类

    输出:

    var: woe转换后的变量,Series

  • 相关阅读:
    LOJ-10108(欧拉回路+并查集)一个图至少用几笔画成
    hdu-1878(欧拉回路)
    LOJ-10106(有向图欧拉回路的判断)
    欧拉回路
    LOJ-10105(欧拉回路模板,套圈法,递归)
    LOJ-10102(求A到B之间的割点)
    LOJ-10103(求删去割点后最多的连通分量)
    LOJ-10102(桥的判断)
    【XSY2278】【HDU5669】the Red Sun(线段树+dijkstra)
    【XSY2434】【CF787D】遗产(线段树+dijkstra)
  • 原文地址:https://www.cnblogs.com/liuxiangyan/p/14389195.html
Copyright © 2020-2023  润新知