TabularPredictor.transform_features

TabularPredictor.transform_features(data: DataFrame | str = None, model: str = None, base_models: list[str] = None, return_original_features: bool = True) DataFrame[source]

通过 AutoGluon 特征生成器转换数据特征。这有助于理解 AutoGluon 如何解释数据特征。此函数的输出可用于训练更多模型,甚至在 AutoGluon 外部。这对于在与 AutoGluon 相同的数据表示上训练您自己的模型非常有用。像神经网络这样的独立 AutoGluon 模型可能会应用此方法未反映的额外特征转换。此方法仅应用所有 AutoGluon 模型使用的通用转换。当 data=Nonebase_models=[{best_model}],且在 fit() 期间启用了 bagging 时:

这将返回最佳模型的 Out-of-Fold (OOF) 预测,这些预测可用作自定义用户堆叠模型的训练输入。

参数:
  • data (pd.DataFrame 或 str (可选)) –

    要应用特征转换的数据。此数据不需要包含标签列。如果传入 str,将使用 str 值作为文件路径加载 data。如果未指定,则在先前调用 fit() 并设置 cache_data=True 时使用的原始数据将被使用。否则,将引发异常。

    对于非 bagging 模式的预测器

    未指定时使用的数据是验证集。这可以是自动生成的验证集,也可以是在 fit() 期间传入的用户定义的 tuning_data。如果所有参数都未指定,则输出等同于 predictor.load_data_internal(data=’val’, return_X=True, return_y=False)[0]。要获取输出的标签值,请调用 predictor.load_data_internal(data=’val’, return_X=False, return_y=True)[1]。如果需要原始训练集,可以通过 data 传入。

    警告:如果设置了 modelbase_models,请勿传入原始训练集。这会导致特征转换过拟合。

    对于 bagging 模式的预测器

    未指定时使用的数据是完整的训练集。如果所有参数都未指定,则输出等同于 predictor.load_data_internal(data=’train’, return_X=True, return_y=False)[0]。要获取输出的标签值,请调用 predictor.load_data_internal(data=’train’, return_X=False, return_y=True)[1]base_model 在此实例中生成的特征将来自 Out-of-Fold (OOF) 预测。请注意,训练集可能与 fit() 期间最初传入的训练集不同,因为 AutoGluon 可能会在训练期间选择丢弃或复制行。警告:如果设置了 modelbase_models,请勿通过 data 传入原始训练集。这会导致特征转换过拟合。而是设置 data=None

  • model (str, default = None) –

    用于生成输入特征的模型。输出数据将等同于将被发送到 model.predict_proba(data) 的输入数据。

    注意:这仅适用于 data 不是训练数据的情况。

    如果为 None,则仅返回在任何模型拟合之前的通用预处理特征。有效的模型列在此 predictor 中,通过调用 predictor.model_names() 获取。如果 data=None,指定 refit_full 模型将导致异常。modelNone 是指定 base_models 时的要求。

  • base_models (list[str], default = None) – 模型名称列表,用作假设堆叠模型的基模型,用于生成输入特征。如果为 None,则仅返回在任何模型拟合之前的通用预处理特征。有效的模型列在此 predictor 中,通过调用 predictor.model_names() 获取。如果存在一个堆叠模型 S,其 base_models=M,则设置 base_models=M 等同于设置 model=S。指定 base_models 时要求 model=None

  • return_original_features (bool, default = True) –

    是否返回原始特征。如果为 False,则仅返回指定 modelbase_models 产生的附加输出列。

    如果目的是将输出用作进一步堆叠模型的输入,而不包含原始特征,则将其设置为 False 会很有用。

返回值:

  • 经过特征转换后提供的 datapd.DataFrame

  • 此输出不包含标签列,如果提供的 data 中存在标签列,将将其移除。

  • 如果需要转换后的标签列,请使用 predictor.transform_labels

示例

>>> from autogluon.tabular import TabularPredictor
>>> predictor = TabularPredictor(label='class').fit('train.csv', label='class', auto_stack=True)  # predictor is in bagged mode.
>>> model = 'WeightedEnsemble_L2'
>>> train_data_transformed = predictor.transform_features(model=model)  # Internal training DataFrame used as input to `model.fit()` for each model trained in predictor.fit()`
>>> test_data_transformed = predictor.transform_features('test.csv', model=model)  # Internal test DataFrame used as input to `model.predict_proba()` during `predictor.predict_proba(test_data, model=model)`