diff --git a/date_feature/method.yaml b/date_feature/method.yaml new file mode 100644 index 0000000..673b91c --- /dev/null +++ b/date_feature/method.yaml @@ -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: + - "处理无序分类特征,如性别、颜色等。" + - "需要将类别型特征转换为数值型特征的场景。" + + + diff --git a/date_feature/parameter.yaml b/date_feature/parameter.yaml new file mode 100644 index 0000000..7155848 --- /dev/null +++ b/date_feature/parameter.yaml @@ -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: "指定如何处理未知类别。可选值" + + + diff --git a/date_feature/parameter_new.yaml b/date_feature/parameter_new.yaml new file mode 100644 index 0000000..9bd9da1 --- /dev/null +++ b/date_feature/parameter_new.yaml @@ -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: "在类别过多时,将类别限制为最大类别数量。" + + + + +