特征处理模板

做特征工程:离散化/标准化/采样/降维/拆分/转换/编码/排序/SQL/表合并/算特征重要性、相关性时,查 params 怎么写

05-任务模板 / 模板使用
特征处理特征工程discretization离散化standardizenormalize标准化归一化sample采样dimension-reduction降维pcadata-split数据拆分data-transform

特征处理

本页大部分模板共用三个入参:

  • input_dataset_path:数据集来源,如 /mnt/admin/pipeline/example/feature-process/data-test1.csv
  • save_dataset_path:输出数据集保存路径,如 /mnt/admin/pipeline/example/feature-process/result.csv
  • params:特征工程参数配置,json 格式(具体字段见各小节示例)

通用约定:col_name 不写表示处理所有列;keep 为 1 时原数据加后缀 _origin 拼接在处理结果前面。

discretization

特征离散化,有等宽、等频、聚类几种可选。入参为上面的 input_dataset_path / save_dataset_path / params。

等宽离散化

[
    {
        "process_type":"width_dist",
        "col_name":"age",
        "col_map":{"age":"age1"},
        "bins":5,
        "keep":1
    }
]
  • process_type:width_dist 表示等宽离散化
  • col_name:需要处理的列名,可多列,英文逗号分隔,不写表示处理所有列
  • col_map:需要重命名的列名,比如 age 重命名为 age1
  • bins:每个特征离散化到几个区间
  • keep:是否保留原始数据,1 则原数据加后缀 _origin 拼接在前面

等频离散化

按分位数来做离散化:

[
    {
        "process_type":"freq_dist",
        "col_name":"age,duration",
        "col_map":{"age":"age1"},
        "bins":5,
        "keep":1
    }
]
  • process_type:freq_dist 表示等频离散化
  • 其余字段含义同等宽离散化

聚类离散化

通过 kmeans 聚类来做离散化:

[
    {
        "process_type":"kbinsdiscretizer",
        "col_name":"",
        "col_map":{},
        "encode":"ordinal",
        "strategy":"kmeans",
        "n_bins":4,
        "keep":1
    }
]
  • process_type:kbinsdiscretizer 表示 k 箱离散化,默认是 kmeans 聚类离散化
  • encode:表示做离散化(编码方式,如 ordinal)
  • strategy:表示通过 kmeans 做聚类离散化
  • n_bins:每个特征离散化到几个区间

standardize-normalize

标准化及正则化,有最大绝对值归一化、最大最小归一化等等。入参为 input_dataset_path / save_dataset_path / params。各小节区别仅在 process_type。

maxabsscaler

最大绝对值归一化:

[
    {
    "process_type":"maxabsscaler",
    "col_name":"",
    "col_map":{},
    "keep":0
    }
]

minmaxscaler

最大最小值归一化:

[
    {
    "process_type":"minmaxscaler",
    "col_name":"",
    "col_map":{},
    "keep":0
    }
]

standardscaler

标准化:

[
    {
    "process_type":"standardscaler",
    "col_name":"",
    "col_map":{},
    "keep":0
    }
]

normalizer

正则化:

[
    {
    "process_type":"normalizer",
    "col_name":"",
    "col_map":{},
    "keep":0
    }
]

z_score

z-score 标准化:

[
    {
    "process_type":"z_score",
    "col_name":"",
    "col_map":{},
    "keep":0
    }
]

time_format

时间列格式化:

[
    {
    "process_type":"time_format",
    "col_name":"time1,time2,time3",
    "col_map":{}
    }
]
  • process_type:time_format 表示时间格式化
  • col_name:需要处理的列名(时间列),可多列,英文逗号分隔

sample

采样,包括随机采样、分层采样、过采样、欠采样等等。入参为 input_dataset_path / save_dataset_path / params。

random_sample

随机采样:

[
    {
    "process_type":"random_sample",
    "ratio":0.5,
    "keep":0
    }
]
  • ratio:采样比例,比如 0.5 表示随机采样 50%

weight_sample

加权采样:

[
    {
    "process_type":"weight_sample",
    "ratio":0.5,
    "weights_path":"/mnt/admin/pipeline/example/feature-process/weight.csv",
    "keep":0
    }
]
  • weights_path:样本权重文件

level_sample

分层采样:

[
    {
    "process_type":"level_sample",
    "ratio":0.5,
    "level_path":"/mnt/admin/pipeline/example/feature-process/level.csv",
    "keep":0
    }
]
  • level_path:样本属于哪个分层的文件

over_under_sample

过采样及欠采样:

[
    {
    "process_type":"over_under_sample",
    "col_y":"y",
    "type":"over_SMOTE",
    "keep":0
    }
]
  • col_y:目标列的名称
  • type:过采样或欠采样类型,可选 over_random、over_SMOTE、over_ADASYN、over_BorderlineSMOTE、under_random、under_NearMiss、under_TomekLinks

dimension-reduction

降维,包括 pca 降维和卡方降维。入参为 input_dataset_path / save_dataset_path / params。

pca

pca 降维可以做主成分分析:

[
    {
    "process_type":"pca",
    "col_name":"",
    "n_components":3,
    "col_map":{"age":"age1","duration":"duration2"},
    "prefix":"pca_",
    "keep":0
    }
]
  • n_components:选出几个主成分
  • prefix:pca 之后的列名前缀

chi_

卡方降维:

[
    {
    "process_type":"chi_",
    "col_name":"",
    "col_y":"y",
    "k":3
    }
]
  • col_y:目标列名称
  • k:根据卡方值选出几列特征列

data-split

数据拆分,包括列内拆分、列间拆分、行间拆分、svd 奇异值分解。入参为 input_dataset_path / save_dataset_path / params。

split_column

列内拆分,拆分某列为 'a-b' 格式的列,拆为 'a' 和 'b' 两列:

[
    {
    "process_type":"split_column",
    "split_map":{"a":",","b":"|"},
    "prefix":""
    }
]
  • split_map:哪一列用哪个分隔符来拆分,可多列
  • prefix:拆分后每列的前缀

split_data

列间或行间拆分:

[
    {
    "process_type":"split_data",
    "col_split_map":{"r_a":"age,duration","r_b":"age,pdays"},
    "row_split_map":{"c":"(0:100)","d":"(99:1002)"},
    "split_outpath":"/mnt/{{creator}}/pipeline/example/feature-process/split_r/"
    }
]
  • col_split_map:拆分后哪几列属于哪个文件,"r_a":"age,duration" 表示 age、duration 列属于文件 r_a
  • row_split_map:拆分后哪几行属于哪个文件,"c":"(0:100)" 表示第 1 到 100 行属于文件 c,"c":"(0.8)" 表示随机 80% 属于文件 c
  • split_outpath:拆分后的文件存到哪个文件夹下

svd

奇异值分解:

[
    {
    "process_type":"svd",
    "col_name":"",
    "svd_outpath":"svd/"
    }
]
  • svd_outpath:分解后的文件存到哪个文件夹下

data-transform

数据转换,包括 boxcox 转换、二值化、数据类型转换、根据函数转换等。入参为 input_dataset_path / save_dataset_path / params。

注:源文档此小节标题写作 data-tranform,按代码语义应为 data-transform(数据转换)。

boxcox

boxcox 转换,只针对非负连续变量进行:

[
    {
    "process_type":"boxcox",
    "col_name":"age,duration",
    "col_map":{"age":"age1","duration":"duration2"},
    "keep":1
    }
]

binarization

二值化,将特征转换为 0 或 1:

[
    {
    "process_type":"binarization",
    "col_name":"age,duration",
    "col_map":{"age":"age1","duration":"duration2"},
    "threshold":0.4,
    "keep":1
    }
]
  • threshold:转换门限,0.4 表示小于 0.4 为 0,大于 0.4 为 1

dct

dct 变换:

[
    {
    "process_type":"dct_transform",
    "col_name":"age,duration",
    "col_map":{"age":"age1","duration":"duration2"},
    "keep":1
    }
]

func_transfer

根据函数转换:

[
    {
    "process_type":"func_transfer",
    "func_map":{"lambda x:x+1":"age,duration"}
    }
]
  • func_map:哪些列做什么转换,比如 {"lambda x:x+1":"age,duration"} 表示 age、duration 列每个值加 1

ma

移动平均:

[
    {
    "process_type":"ma",
    "col_map":{},
    "time_col":"",
    "col_name":"age,duration",
    "window":3,
    "keep":0
    }
]
  • time_col:时间列;若有时间列,依据时间列从前往后排序后再做移动平均,若无则直接做
  • window:移动平均的窗口大小

type_transfer

数据类型转换:

[
    {
    "process_type":"type_transfer",
    "col_trans_map":{"sex":"to_str","family":"str_to_bool","education":"eval"}
    }
]
  • col_trans_map:哪列做什么类型转换,可转换类型有 str_to_int、str_to_float、str_to_bool、to_str、eval(字符串变为列表、字典、集合)

polynomialfeatures

多项式展开:

[
    {
    "process_type":"polynomialfeatures",
    "col_name":"",
    "col_map":{},
    "degree":2,
    "prefix":"expand_",
    "keep":0
    }
]
  • degree:展开的阶数
  • prefix:展开后列名的前缀,默认 expand_

objective-process

非数值型变量的处理,包括 hash、根据统计量转换等。入参为 input_dataset_path / save_dataset_path / params。

featurehasher

对非数值型变量做 hash:

[
    {
    "process_type":"featurehasher",
    "col_name":"",
    "col_map":{},
    "prefix":"hash_",
    "n_features":3,
    "keep":0
    }
]
  • prefix:hash 后列名的前缀,默认 hash_
  • n_features:hash 的阶数

label_encoding

非数值型变量依据统计量或指定 map 做数值转换:

[
    {
    "process_type":"label_encoding",
    "col_name":"sex",
    "map":{"sex":{"f":1,"m":2}},
    "type":"order"
    }
]
  • map:当 type 为 order 时指定映射,{"sex":{"f":1,"m":2}} 表示 sex 列 f→1、m→2;其余 type 不需指定 map
  • type:转换类别,random 表示随机映射,order 表示按指定 map 映射,counting 表示把每个类别出现次数映射为数值,target 表示二分类中每个类别映射为该类别 y=1 的个数

one-hot

非数值型变量进行 one-hot 展开:

[
    {
        "process_type":"one_hot",
        "col_name":"age",
        "col_map":{"age":"age1"},
        "keep":0
    }
]

index-process

索引处理,比如增加索引、索引转列、列索引重命名。入参为 input_dataset_path / save_dataset_path / params。

col_rename

列名重命名:

[
    {
    "process_type":"col_rename",
    "col_map":{"age":"age1"},
    "keep":1
    }
]

index_to_col

将索引转换为列:

[
    {
    "process_type":"index_to_col",
    "index_name":"order",
    "to_str":"false"
    }
]
  • index_name:索引转换为列之后的列名
  • to_str:转列后是否转为字符串型

add_index

增加行索引:

[
    {
    "process_type":"add_index",
    "index_path":"/mnt/admin/pipeline/example/feature-process/level.csv",
    "save_index_path":"save_index_path.csv"
    }
]
  • index_path:需要增加的行索引存放的位置
  • save_index_path:保存索引数据结果的位置

sort

排序。入参为 input_dataset_path / save_dataset_path / params。

[
    {
    "process_type":"sort",
    "col_name":"a,c",
    "col_map":{},
    "ascending":"False"
    }
]
  • col_name:根据哪几列来排序,多列间英文逗号分隔
  • ascending:True 升序,False 降序

run-sql

在数据集上执行 sql 语句。入参为 input_dataset_path / save_dataset_path / params。

[
    {
    "process_type":"runsql",
    "query":"select * from data where age>30"
    }
]
  • query:要执行的 sql 语句

union-join-data

合并数据集,union 或 join。

入参:

  • data:数据集来源,可有多个表,表名用 | 分隔,如 /mnt/.../a.csv|/mnt/.../b.csv|/mnt/.../c.csv
  • merge_type:合并类型,row_union/column_union/left_join/right_join/inner_join/outer_join,分别表示行拼接、列拼接、按指定主键列做 left_join 等
  • ignore_index:合并时是否忽略索引,如果是自增索引,忽略索引会从头开始,如 True
  • join_columns:如果是 join,需指定此参数,当作主键用于连接
  • save_dataset_path:输出数据集保存路径

说明:源使用文档此处把取值写作 left_jon,已按代码改正为 left_join。合法取值见 job-template/job/feature-process/launcher-union-join-data.py:19-36:row_union/column_union/left_join/right_join/inner_join/outer_join,其中 join 类需配 join_columns

hadamard-multiply

hadamard 乘积。

入参:

  • data1:数据来源 1
  • data2:数据来源 2
  • save_dataset_path:hadamard 乘积结果保存路径

feature-importance

通过随机森林、逻辑回归、xgboost 等模型计算特征重要性,还可以计算特征的 iv 值、互信息值、方差等。

入参:

  • model_path:如果要用已有模型来评估特征重要性,则输入模型的路径
  • method:logistic_regression | random_forest | xgb | iv | mutual_if | chi | variance,分别表示逻辑回归特征参数绝对值、随机森林特征重要性、xgboost 特征重要性、iv 值、互信息值、卡方值、方差(计算方差时先做了归一化)
  • input_dataset_path:输入数据集的路径
  • col_name:需要计算重要性的列名,英文逗号分隔,不输入默认计算全部
  • target:目标变量列名,可多列,英文逗号分隔
  • save_dataset_path:输出所有特征重要性等信息的保存路径

feature-combine

特征组合,用于衍生特征。

入参:

  • params:特征衍生参数配置
  • input_dataset_path:输入数据集文件路径
  • save_dataset_path:输出数据集文件路径

params 示例:

{
    "cross":"age,duration,campaign,emp_var_rate",
    "polynomial":"age,duration,campaign,emp_var_rate",
    "hashing":"age,duration,campaign,emp_var_rate",
    "aggregation":"age,duration,campaign,emp_var_rate",
    "statistics":"age,duration,campaign,emp_var_rate"
}

params 的 key 表示用什么方法做特征衍生(5 种可选):cross 表示特征相乘,polynomial 表示多项式特征,hashing 表示两列做 hash,aggregation 表示根据 A 列对 B 列做聚合后得到的统计量作为组合特征,statistics 表示两列均值做组合特征。

params 的 value 表示方法作用于哪些列,英文逗号分隔。

calculate-correlation

calculate-correlation 模板可以做特征向量间的相关性计算。

入参:

  • input_dataset_path:需要处理的样本路径,如 data/fin_data.csv
  • result_path:处理之后结果保存的路径,如 data/fin_data_r.csv
  • corr_type:corr 表示计算特征之间的相关系数矩阵
  • feature_columns:需要计算相关性的特征列,英文逗号分隔
最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki