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 时:
这将返回最佳模型的 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 传入。
警告:如果设置了 model 或 base_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 可能会在训练期间选择丢弃或复制行。警告:如果设置了 model 或 base_models,请勿通过 data 传入原始训练集。这会导致特征转换过拟合。而是设置 data=None。
model (str, default = None) –
用于生成输入特征的模型。输出数据将等同于将被发送到 model.predict_proba(data) 的输入数据。
注意:这仅适用于 data 不是训练数据的情况。
如果为 None,则仅返回在任何模型拟合之前的通用预处理特征。有效的模型列在此 predictor 中,通过调用 predictor.model_names() 获取。如果 data=None,指定 refit_full 模型将导致异常。model 为 None 是指定 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,则仅返回指定 model 或 base_models 产生的附加输出列。
如果目的是将输出用作进一步堆叠模型的输入,而不包含原始特征,则将其设置为 False 会很有用。
- 返回值:
经过特征转换后提供的 data 的
pd.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)`