添加--特征工程方法和参数

This commit is contained in:
haotian 2025-02-17 14:28:00 +08:00
parent de760a485d
commit dd8f780fea
3 changed files with 574 additions and 0 deletions

133
date_feature/method.yaml Normal file
View File

@ -0,0 +1,133 @@
feature_engineering_methods:
LabelEncoder:
description: "将分类标签转换为数值编码,即每个类别映射为一个整数。"
advantages:
- "简单直观,适用于有序分类特征。"
disadvantages:
- "可能引入类别之间的顺序关系,不适用于无序分类特征。"
applicable_scenarios:
- "适用于有序分类特征,如等级、评分等。"
KBinsDiscretizer:
description: "将连续特征离散化,即将数值特征分桶,转换为离散的整数值或独热编码。"
advantages:
- "能够捕捉非线性关系,减少模型对异常值的敏感性。"
disadvantages:
- "可能导致信息损失,选择不当的分桶策略可能影响模型性能。"
applicable_scenarios:
- "适用于需要将连续特征离散化的场景,如决策树模型中的特征预处理。"
FunctionTransformer:
description: "对特征应用自定义的转换函数,实现灵活的特征变换。"
advantages:
- "提供高度灵活性,能够实现任意的特征转换。"
disadvantages:
- "需要用户自行定义转换函数,可能增加实现复杂度。"
applicable_scenarios:
- "适用于需要自定义特征转换的场景,如对数变换、平方根变换等。"
PowerTransformer:
description: "对特征进行幂变换,使数据更接近正态分布,提高模型性能。"
advantages:
- "能够稳定方差,减少偏度,使数据更符合正态分布假设。"
disadvantages:
- "对某些数据可能不适用,且需要注意变换后的数据范围。"
applicable_scenarios:
- "适用于需要对数据进行正态化处理的场景,如线性回归模型中的特征预处理。"
QuantileTransformer:
description: "对特征进行分位数变换,将数据映射到均匀分布或正态分布。"
advantages:
- "能够有效处理异常值,消除数据分布的偏态。"
disadvantages:
- "可能导致数据失真,特别是对于离散型特征。"
applicable_scenarios:
- "适用于需要将数据转换为特定分布的场景,如提高模型对异常值鲁棒性的应用。"
FeatureHasher:
description: "使用哈希函数将分类特征编码为固定长度的向量,适用于高维稀疏数据。"
advantages:
- "能够处理高维数据,避免独热编码导致的维度爆炸。"
- "计算效率高,适合大规模数据。"
disadvantages:
- "可能出现哈希冲突,导致信息丢失。"
- "无法逆转哈希过程,原始信息不可恢复。"
applicable_scenarios:
- "适用于文本数据处理,如词袋模型中的特征表示。"
- "需要对高维分类特征进行高效编码的场景。"
DictVectorizer:
description: "将符号表示的特征(如字典)转换为稀疏矩阵形式,便于后续模型处理。"
advantages:
- "直接处理字典格式数据,方便快捷。"
- "生成的稀疏矩阵高效存储,节省内存。"
disadvantages:
- "对于数值型特征,需提前进行适当处理。"
- "当特征种类繁多时,可能导致维度过高。"
applicable_scenarios:
- "处理包含类别型特征的字典格式数据,如从 JSON 文件中读取的数据。"
- "需要将符号特征转换为数值特征的场景。"
PCA:
description: "主成分分析,通过线性变换将高维数据投影到低维空间,保留数据的主要信息。"
advantages:
- "降低数据维度,减少计算成本。"
- "消除特征之间的多重共线性,提高模型性能。"
disadvantages:
- "可能丢失部分信息,影响模型精度。"
- "主成分缺乏可解释性,难以理解每个成分的具体含义。"
applicable_scenarios:
- "高维数据场景,如图像处理、基因数据分析等。"
- "需要降维以提高模型训练速度和效果的情况。"
SelectKBest:
description: "根据统计检验方法选择得分最高的 K 个特征,进行特征选择。"
advantages:
- "简单易用,计算速度快。"
- "能够提高模型性能,减少过拟合。"
disadvantages:
- "独立评估每个特征,未考虑特征之间的关联。"
- "需要手动指定 K 值,可能需要多次尝试。"
applicable_scenarios:
- "初步筛选特征,减少特征数量。"
- "需要快速评估特征重要性的场景。"
RFE:
description: "递归特征消除,反复训练模型,删除权重系数最小的特征,直到达到预定的特征数量。"
advantages:
- "考虑特征之间的交互作用,选择效果较好。"
- "能够提高模型的泛化能力,减少过拟合。"
disadvantages:
- "计算成本高,训练时间长。"
- "对模型的选择敏感,不同模型可能导致不同的特征选择结果。"
applicable_scenarios:
- "特征数量较多,需要筛选出重要特征的情况。"
- "对模型性能要求较高,愿意投入更多计算资源的场景。"
PolynomialFeatures:
description: "生成多项式特征,将原始特征组合生成高阶特征,增加模型的非线性能力。"
advantages:
- "捕捉特征之间的交互关系,提高模型拟合能力。"
- "无需引入新的特征,利用现有特征进行扩展。"
disadvantages:
- "可能导致特征数量爆炸,增加计算成本和过拟合风险。"
- "生成的高阶特征可能缺乏实际意义,增加理解难度。"
applicable_scenarios:
- "线性模型无法满足需求,需要引入非线性特征的情况。"
- "希望通过特征组合提高模型性能的场景。"
OneHotEncoder:
description: "将分类特征转换为独热编码,每个类别用一个二进制向量表示,消除类别之间的顺序关系。"
advantages:
- "适用于无序分类特征,避免引入虚假的顺序信息。"
- "与大多数机器学习算法兼容性好。"
disadvantages:
- "当类别数量较多时,可能导致特征矩阵维度过高。"
- "对新出现的类别需要重新训练编码器。"
applicable_scenarios:
- "处理无序分类特征,如性别、颜色等。"
- "需要将类别型特征转换为数值型特征的场景。"

186
date_feature/parameter.yaml Normal file
View File

@ -0,0 +1,186 @@
feature_engineering_methods_parameters:
LabelEncoder:
parameters: {}
KBinsDiscretizer:
parameters:
n_bins:
description: "指定每个特征要分成的箱数。可以是单个整数,表示所有特征使用相同的箱数;也可以是形状为 (n_features,) 的数组,为每个特征指定不同的箱数。"
default: 5
encode:
description: "指定离散化后输出的编码方式。可选值包括 'onehot'(独热编码)、'onehot-dense'(密集独热编码)、'ordinal'(序数编码)。"
default: 'onehot'
strategy:
description: "定义分箱策略。可选值包括 'uniform'(均匀分箱)、'quantile'(分位数分箱)、'kmeans'K-Means 聚类分箱)。"
default: 'quantile'
FunctionTransformer:
parameters:
func:
description: "要应用于输入数据的函数。"
default: null
inverse_func:
description: "func 的逆函数,如果存在。"
default: null
validate:
description: "布尔值,指示是否在转换前验证输入数据。"
default: false
accept_sparse:
description: "布尔值,指示是否接受稀疏矩阵作为输入。"
default: false
check_inverse:
description: "布尔值,指示在适合期间是否检查 func 和 inverse_func 是否互为逆函数。"
default: true
kw_args:
description: "传递给 func 的其他关键字参数。"
default: null
inv_kw_args:
description: "传递给 inverse_func 的其他关键字参数。"
default: null
PowerTransformer:
parameters:
method:
description: "指定变换方法。可选值包括 'yeo-johnson' 和 'box-cox'。"
default: 'yeo-johnson'
standardize:
description: "布尔值,指示是否在变换后将数据标准化为零均值和单位方差。"
default: true
copy:
description: "布尔值,指示是否复制输入数据,或在原地进行变换。"
default: true
QuantileTransformer:
parameters:
n_quantiles:
description: "用于分位数变换的分位数数量。"
default: 1000
output_distribution:
description: "指定输出分布。可选值包括 'uniform' 和 'normal'。"
default: 'uniform'
ignore_implicit_zeros:
description: "布尔值,指示是否忽略隐式零。"
default: false
subsample:
description: "用于计算分位数的子样本大小。"
default: 1e5
random_state:
description: "用于随机数生成的种子。"
default: null
copy:
description: "布尔值,指示是否复制输入数据,或在原地进行变换。"
default: true
FeatureHasher:
parameters:
n_features:
description: "哈希空间的维度。"
default: 1048576
input_type:
description: "输入数据的类型。可选值包括 'dict' 和 'pair'。"
default: 'dict'
dtype:
description: "输出数据的类型。"
default: 'float64'
alternate_sign:
description: "布尔值,指示是否在哈希时使用交替符号。"
default: true
DictVectorizer:
parameters:
dtype:
description: "输出数据的类型。"
default: 'float64'
separator:
description: "用于分隔特征名称的分隔符。"
default: '='
sparse:
description: "布尔值,指示是否返回稀疏矩阵。"
default: true
sort:
description: "布尔值,指示是否对特征名称排序。"
default: true
PCA:
parameters:
n_components:
description: "要保留的主成分数量。可以是整数、浮点数或 'mle'。"
default: null
copy:
description: "布尔值,指示是否复制输入数据,或在原地进行变换。"
default: true
whiten:
description: "布尔值,指示是否对主成分进行白化。"
default: false
svd_solver:
description: "用于计算 SVD 的方法。可选值包括 'auto'、'full'、'arpack' 和 'randomized'。"
default: 'auto'
tol:
description: "奇异值分解的容差。"
default: 0.0
iterated_power:
description: "用于随机化 SVD 的迭代次数。"
default: 'auto'
random_state:
description: "用于随机数生成的种子。"
default: null
SelectKBest:
parameters:
score_func:
description: "用于计算特征得分的函数。"
default: 'f_classif'
k:
description: "要选择的特征数量。"
default: 10
RFE:
parameters:
estimator:
description: "用于特征选择的基模型。"
default: null
n_features_to_select:
description: "要选择的特征数量。"
default: null
step:
description: "每次迭代要移除的特征数量。"
default: 1
verbose:
description: "控制冗长模式的整数。"
default: 0
PolynomialFeatures:
parameters:
degree:
description: "生成多项式特征的最高次数。"
default: 2
interaction_only:
description: "布尔值,指示是否仅包含交互项。"
default: false
include_bias:
description: "布尔值,指示是否包含偏置列。"
default: true
order:
description: "输出特征的顺序。可选值包括 'C' 和 'F'。"
default: 'C'
OneHotEncoder:
parameters:
categories:
description: "指定每个特征的类别。"
default: 'auto'
drop:
description: "指定要从每个特征中删除的类别。"
default: null
sparse:
description: "布尔值,指示是否返回稀疏矩阵。"
default: true
dtype:
description: "输出数据的类型。"
default: 'float64'
handle_unknown:
description: "指定如何处理未知类别。可选值"

View File

@ -0,0 +1,255 @@
feature_engineering_methods_parameters:
LabelEncoder:
description: "将分类标签编码为整数。"
parameters: []
KBinsDiscretizer:
description: "将连续数据分箱为离散数据。"
parameters:
- name: "n_bins"
type: "int or array-like"
default: 5
description: "指定每个特征要分成的箱数。可以是单个整数,表示所有特征使用相同的箱数;也可以是形状为 (n_features,) 的数组,为每个特征指定不同的箱数。"
- name: "encode"
type: "str"
default: "onehot"
description: "指定离散化后输出的编码方式。可选值包括 'onehot'(独热编码)、'onehot-dense'(密集独热编码)、'ordinal'(序数编码)。"
- name: "strategy"
type: "str"
default: "quantile"
description: "定义分箱策略。可选值包括 'uniform'(均匀分箱)、'quantile'(分位数分箱)、'kmeans'K-Means 聚类分箱)。"
FunctionTransformer:
description: "对数据应用自定义函数进行转换。"
parameters:
- name: "func"
type: "callable"
default: null
description: "要应用于输入数据的函数。"
- name: "inverse_func"
type: "callable"
default: null
description: "func 的逆函数,如果存在。"
- name: "validate"
type: "bool"
default: false
description: "指示是否在转换前验证输入数据。"
- name: "accept_sparse"
type: "bool"
default: false
description: "指示是否接受稀疏矩阵作为输入。"
- name: "check_inverse"
type: "bool"
default: true
description: "指示在适合期间是否检查 func 和 inverse_func 是否互为逆函数。"
- name: "kw_args"
type: "dict"
default: null
description: "传递给 func 的其他关键字参数。"
- name: "inv_kw_args"
type: "dict"
default: null
description: "传递给 inverse_func 的其他关键字参数。"
PowerTransformer:
description: "对数据进行幂变换以使其更符合正态分布。"
parameters:
- name: "method"
type: "str"
default: "yeo-johnson"
description: "指定变换方法。可选值包括 'yeo-johnson' 和 'box-cox'。"
- name: "standardize"
type: "bool"
default: true
description: "指示是否在变换后将数据标准化为零均值和单位方差。"
- name: "copy"
type: "bool"
default: true
description: "指示是否复制输入数据,或在原地进行变换。"
QuantileTransformer:
description: "将数据转换为均匀分布或正态分布。"
parameters:
- name: "n_quantiles"
type: "int"
default: 1000
description: "用于分位数变换的分位数数量。"
- name: "output_distribution"
type: "str"
default: "uniform"
description: "指定输出分布。可选值包括 'uniform' 和 'normal'。"
- name: "ignore_implicit_zeros"
type: "bool"
default: false
description: "指示是否忽略隐式零。"
- name: "subsample"
type: "int"
default: 100000
description: "用于计算分位数的子样本大小。"
- name: "random_state"
type: "int or None"
default: null
description: "用于随机数生成的种子。"
- name: "copy"
type: "bool"
default: true
description: "指示是否复制输入数据,或在原地进行变换。"
FeatureHasher:
description: "使用哈希技巧将特征映射到向量。"
parameters:
- name: "n_features"
type: "int"
default: 1048576
description: "哈希空间的维度。"
- name: "input_type"
type: "str"
default: "dict"
description: "输入数据的类型。可选值包括 'dict' 和 'pair'。"
- name: "dtype"
type: "type"
default: "float64"
description: "输出数据的类型。"
- name: "alternate_sign"
type: "bool"
default: true
description: "指示是否在哈希时使用交替符号。"
DictVectorizer:
description: "将符号表示的特征(如字典)转换为稀疏矩阵。"
parameters:
- name: "dtype"
type: "type"
default: "float64"
description: "输出数据的类型。"
- name: "separator"
type: "str"
default: "="
description: "用于分隔特征名称的分隔符。"
- name: "sparse"
type: "bool"
default: true
description: "指示是否返回稀疏矩阵。"
- name: "sort"
type: "bool"
default: true
description: "指示是否对特征名称排序。"
PCA:
description: "主成分分析,用于降维。"
parameters:
- name: "n_components"
type: "int, float, None or str"
default: null
description: "要保留的主成分数量。可以是整数、浮点数或 'mle'。"
- name: "copy"
type: "bool"
default: true
description: "指示是否复制输入数据,或在原地进行变换。"
- name: "whiten"
type: "bool"
default: false
description: "指示是否对主成分进行白化。"
- name: "svd_solver"
type: "str"
default: "auto"
description: "用于计算 SVD 的方法。可选值包括 'auto'、'full'、'arpack' 和 'randomized'。"
- name: "tol"
type: "float"
default: 0.0
description: "奇异值分解的容差。"
- name: "iterated_power"
type: "int or 'auto'"
default: 'auto'
description: "用于随机化 SVD 的迭代次数。"
- name: "random_state"
type: "int or None"
default: null
description: "用于随机数生成的种子。"
SelectKBest:
description: "选择最重要的 K 个特征。"
parameters:
- name: "score_func"
type: "callable"
default: "f_classif"
description: "用于计算特征得分的函数。"
- name: "k"
type: "int"
default: 10
description: "要选择的特征数量。"
RFE:
description: "递归特征消除,用于选择最重要的特征。"
parameters:
- name: "estimator"
type: "object"
default: null
description: "用于特征选择的基模型。"
- name: "n_features_to_select"
type: "int"
default: null
description: "要选择的特征数量。"
- name: "step"
type: "int"
default: 1
description: "每次迭代要移除的特征数量。"
- name: "verbose"
type: "int"
default: 0
description: "控制冗长模式的整数。"
PolynomialFeatures:
description: "生成多项式特征,增加模型的非线性能力。"
parameters:
- name: "degree"
type: "int"
default: 2
description: "生成多项式特征的最高次数。"
- name: "interaction_only"
type: "bool"
default: false
description: "指示是否仅包含交互项。"
- name: "include_bias"
type: "bool"
default: true
description: "指示是否包含偏置列。"
- name: "order"
type: "str"
default: "C"
description: "输出特征的顺序。可选值包括 'C' 和 'F'。"
OneHotEncoder:
description: "将分类特征转换为独热编码。"
parameters:
- name: "categories"
type: "str or list or 'auto'"
default: "auto"
description: "指定每个特征的类别。"
- name: "drop"
type: "str or array-like"
default: null
description: "指定要从每个特征中删除的类别。"
- name: "sparse"
type: "bool"
default: true
description: "指示是否返回稀疏矩阵。"
- name: "dtype"
type: "type"
default: "float64"
description: "输出数据的类型。"
- name: "handle_unknown"
type: "str"
default: "error"
description: "指定如何处理未知类别。可选值包括 'error'(抛出异常)、'ignore'(忽略)。"
- name: "max_categories"
type: "int or None"
default: null
description: "在类别过多时,将类别限制为最大类别数量。"