mambular.utils#

class mambular.preprocessing.Preprocessor(n_bins=50, numerical_preprocessing='ple', use_decision_tree_bins=False, binning_strategy='uniform', task='regression', cat_cutoff=0.03, treat_all_integers_as_numerical=False, degree=3, knots=12)[源代码]#

一个用于结构化数据的全面预处理器,能够处理数值和分类特征。它支持多种数值数据的预处理策略,包括分箱、独热编码、标准化和归一化。分类特征可以使用连续序数编码进行转换。此外,它还允许使用决策树导出的边界进行数值特征分箱。

该类设计为与 pandas DataFrame 无缝协作,便于轻松集成到机器学习管道中。

参数:
  • n_bins (int, default=50) – 用于数值特征分箱的箱数。仅当 numerical_preprocessing 设置为 ‘binning’ 或 ‘one_hot’ 时,此参数才相关。

  • numerical_preprocessing (str, default="ple") – 数值特征的预处理策略。有效选项包括 ‘分箱’、’独热编码’、’标准化’ 和 ‘归一化’。

  • use_decision_tree_bins (bool, default=False) – 如果为 True,使用决策树回归/分类来确定数值特征分箱的最佳边缘。此参数仅在 numerical_preprocessing 设置为 ‘binning’ 或 ‘one_hot’ 时相关。

  • binning_strategy (str, default="uniform") – 定义数值特征的分箱策略。选项包括 ‘uniform’、’quantile’ 或其他与 sklearn 兼容的策略。

  • task (str, default="regression") – 指示机器学习任务的类型(’回归’ 或 ‘分类’)。这可以影响某些预处理行为,特别是在使用基于决策树的分箱时。

  • cat_cutoff (float or int, default=0.03) – 指示整数值被视为分类后的截断点。如果是浮点数,则视为百分比。如果是整数,则是列为分类的最大唯一值数。

  • treat_all_integers_as_numerical (bool, default=False) – 如果为真,所有整数列将被视为数值型,无论其唯一值的数量或比例如何。

  • degree (int, default=3) – 在预处理中要使用的多项式特征的次数。

  • knots (int, default=12) – 在样条变换中要使用的节点数量。

column_transformer#

sklearn 的 ColumnTransformer 的一个实例,它包含了为不同特征类型配置的预处理管道。

类型:

ColumnTransformer

fitted#

指示预处理器是否已拟合到数据。

类型:

布尔

fit(X, y=None)[源代码]#

通过识别特征类型并配置每个特征的适当转换,将预处理器拟合到数据。它根据指定的预处理策略,为数值和分类特征设置了一个包含转换管道的列转换器。

参数:
  • dict) (X (DataFrame or) –

  • (array-like (y) –

  • optional) (The target variable. Required if use_decision_tree_bins is True for determining optimal bin edges using decision trees.) –

返回:

self: 已拟合的预处理器实例。

fit_transform(X, y=None)[源代码]#

将预处理器拟合到数据,然后使用拟合的预处理管道转换数据。这是一个结合了 fittransform 的便捷方法。

参数:
  • dict) (X (DataFrame or) –

  • (array-like (y) –

  • optional) (The target variable. Required if use_decision_tree_bins is True.) –

返回:

dict: 一个包含转换后数据的字典,其中键是基础特征名称,值是转换后的特征数组。

get_feature_info()[源代码]#

获取关于特征在模型预处理器中如何编码的信息。此方法识别应用于每个特征的编码类型,将它们分类为分箱或序数编码以及其他类型的编码(例如,离散化后的独热编码)。

此方法应在预处理器拟合后调用,因为它依赖于 column_transformer 属性的结构和配置。

抛出:
  • RuntimeError – 如果 column_transformer 尚未拟合,表明预处理器必须:

  • fitted before invoking this method.

返回:

tuple of (dict, dict): - 第一个字典将特征名称映射到它们各自的分箱数或类别数(如果它们使用离散化或序数编码进行处理)。 - 第二个字典包含具有其他编码细节的特征名称,例如编码转换后特征的维度(例如,独热编码的维度)。

transform(X)[源代码]#

使用预配置的列转换器转换输入数据,并将输出转换为字典格式,其中键对应于转换后的特征名称,值为转换后的数据数组。

此方法将列转换器返回的稀疏或密集矩阵转换为更易访问的字典格式,其中每个键值对表示一个特征及其转换后的数据。使用预配置的列转换器转换输入数据,并将输出转换为字典格式,键对应于转换后的特征名称,值为转换后的数据数组。

此方法将列转换器返回的稀疏或密集矩阵转换为更易访问的字典格式,其中每个键值对表示一个特征及其转换后的数据。

参数:
  • (DataFrame) (X) –

  • (DataFrame)

返回:

dict: 一个字典,其中键是特征的名称(根据列转换器中定义的转换),值是转换后的数据的 numpy 数组。