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=None`base_models=[{best_model}],并且在fit()期间启用了bagging时:

这将返回最佳模型的折叠外预测,可以用作用户自定义堆叠模型的训练输入。

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

    要应用特征转换的数据。 此数据不需要标签列。 如果传递了 str,data 将使用 str 值作为文件路径加载。 如果未指定,则如果之前调用 fit() 时使用了 cache_data=True,则将使用 fit() 期间使用的原始数据。否则,将引发异常。

    对于非 bagged 模式的预测器:

    未指定时使用的数据是验证集。 这可以是自动生成的验证集,也可以是用户在 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,请不要传递原始训练集。这将导致过拟合的特征转换。

    对于 bagged 模式的预测器:

    未指定时使用的数据是完整的训练集。 如果所有参数都未指定,则输出等同于 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 特征将来自折叠外预测。 请注意,训练集可能与 fit() 期间最初传递的训练集不同,因为 AutoGluon 可能会在训练期间选择删除或复制行。 警告:如果设置了 modelbase_models,请不要通过 data 传递原始训练集。这将导致过拟合的特征转换。相反,请设置 data=None

  • model (str, default = None) –

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

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

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

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

  • return_original_features (bool, default = True) –

    是否返回原始特征。 如果为False,则仅返回指定modelbase_models的额外输出列。

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

Returns:

  • pd.DataFrame 提供的 data 在应用特征转换后的结果。

  • 此输出不包括标签列,如果提供的 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)`