TabularPredictor.fit

TabularPredictor.fit(train_data: DataFrame | str, tuning_data: DataFrame | str = None, time_limit: float = None, presets: List[str] | str = None, hyperparameters: dict | str = None, feature_metadata='infer', infer_limit: float = None, infer_limit_batch_size: int = None, fit_weighted_ensemble: bool = True, fit_full_last_level_weighted_ensemble: bool = True, full_weighted_ensemble_additionally: bool = False, dynamic_stacking: bool | str = False, calibrate_decision_threshold: bool | str = 'auto', num_cpus: int | str = 'auto', num_gpus: int | str = 'auto', fit_strategy: Literal['sequential', 'parallel'] = 'sequential', memory_limit: float | str = 'auto', callbacks: List[AbstractCallback] = None, **kwargs) TabularPredictor[source]

拟合模型以基于其他列(特征)预测数据表的某一列(标签)。

Parameters:
  • train_data (pd.DataFrame 或 str) – 训练数据的表格,作为 pandas DataFrame。 如果传递的是 str,train_data 将使用 str 值作为文件路径加载。

  • tuning_data (pd.DataFrame 或 str, 可选) – 另一个包含验证数据的数据集,用于调优过程,如早期停止和超参数调优。 此数据集的格式应与 train_data 相同。 如果传递了 str,tuning_data 将使用 str 值作为文件路径加载。 注意:返回的最终模型可能会在 tuning_datatrain_data 上进行拟合。不要在此处提供您的评估测试数据! 特别是当 num_bag_folds > 0 或 num_stack_levels > 0 时,模型将在 tuning_datatrain_data 上进行训练。 如果 tuning_data = Nonefit() 将自动从 train_data 中保留一些随机的验证示例。

  • time_limit (int, default = None) – 大约fit()应该运行多长时间(以秒为单位的挂钟时间)。 如果未指定,fit()将运行直到所有模型完成训练,但除非指定了num_bag_sets,否则不会重复打包模型。

  • presets (liststrdict, 默认值 = ['medium_quality']) –

    用于fit()中各种参数的预设配置列表。可以显著影响训练模型的预测准确性、内存占用和推理延迟,以及返回的predictor的其他各种属性。 建议在熟悉AutoGluon之前指定预设,并避免指定大多数其他fit()参数或模型超参数。 例如,要获得最准确的预测器(无论其效率如何),请设置presets=’best_quality’。 要以最小的磁盘使用量获得良好的质量,请设置presets=[‘good_quality’, ‘optimize_for_deployment’]fit()中指定的任何用户参数将覆盖预设使用的值。 如果指定了预设列表,后面的预设将覆盖前面的预设,如果它们修改了相同的参数。 有关提供的预设的准确定义,请参见文件:autogluon/tabular/configs/presets_configs.py。 用户可以通过将参数值的字典作为列表元素传递来指定自定义预设。

    可用预设:[‘best_quality’, ‘high_quality’, ‘good_quality’, ‘medium_quality’, ‘experimental_quality’, ‘optimize_for_deployment’, ‘interpretable’, ‘ignore_text’]

    建议在调用fit()时仅使用一个基于quality的预设,因为它们修改了许多相同的参数并且彼此不兼容。

    深入预设信息:
    best_quality={‘auto_stack’: True, ‘dynamic_stacking’: ‘auto’, ‘hyperparameters’: ‘zeroshot’}

    最佳预测准确性,几乎不考虑推理时间或磁盘使用量。通过指定较大的time_limit值可以获得更好的结果。 推荐用于需要最佳模型准确性的应用。

    high_quality={‘auto_stack’: True, ‘dynamic_stacking’: ‘auto’, ‘hyperparameters’: ‘zeroshot’, ‘refit_full’: True, ‘set_best_to_refit_full’: True, ‘save_bag_folds’: False}

    高预测准确性,推理速度快。推理速度比best_quality快约8倍,磁盘使用量低约8倍。 推荐用于需要合理推理速度和/或模型大小的应用。

    good_quality={‘auto_stack’: True, ‘dynamic_stacking’: ‘auto’, ‘hyperparameters’: ‘light’, ‘refit_full’: True, ‘set_best_to_refit_full’: True, ‘save_bag_folds’: False}

    良好的预测准确性,推理速度非常快。推理速度比high_quality快约4倍,磁盘使用量低约4倍。 推荐用于需要快速推理速度的应用。

    medium_quality={‘auto_stack’: False}

    中等预测准确性,推理速度和训练速度都非常快。训练速度比good_quality快约20倍。 这是AutoGluon中的默认预设,但通常仅用于快速原型设计,因为good_quality会显著提高预测准确性和推理速度。

    experimental_quality={‘auto_stack’: True, ‘dynamic_stacking’: ‘auto’, ‘hyperparameters’: ‘experimental’, ‘fit_strategy’: ‘parallel’, ‘num_gpus’: 0}

    此预设作为前沿功能和模型的测试场,这些功能和模型可能会在未来的版本中添加到best_quality预设中。 推荐在已经使用best_quality并且用户希望进一步提高性能时使用。

    optimize_for_deployment={‘keep_only_best’: True, ‘save_space’: True}

    通过删除未使用的模型和移除训练工件,立即优化结果以进行部署。 通常可以将磁盘使用量减少约2-4倍,而不会影响模型准确性或推理速度。 这将禁用许多高级功能,但不会影响推理。 这将使某些功能的信息量减少,例如predictor.leaderboard()predictor.fit_summary()

    由于在此预设下将删除未使用的模型,因此像predictor.leaderboard()predictor.fit_summary()这样的方法将不再显示在fit()期间训练的所有模型。

    推荐用于AutoGluon训练的内部细节不重要且不打算手动选择最终模型的应用。 此预设与其他预设(如good_quality)搭配使用,可以生成非常紧凑的最终模型。 等同于在fit()之后直接调用predictor.delete_models(models_to_keep=’best’, dry_run=False)predictor.save_space()

    interpretable={‘auto_stack’: False, ‘hyperparameters’: ‘interpretable’}

    仅拟合来自imodels包的可解释的基于规则的模型。 牺牲预测准确性以换取简洁性。

    ignore_text={‘_feature_generator_kwargs’: {‘enable_text_ngram_features’: False, ‘enable_text_special_features’: False, ‘enable_raw_text_features’: False}}

    在检测到文本特征时禁用自动特征生成。 这对于确定文本特征对最终结果的有益程度以及确保特征在不是文本时不被误认为文本非常有用。 如果还指定了feature_generator,则忽略此设置。

  • 超参数 (strdict, 默认 = 'default') –

    确定模型使用的超参数。 如果传递str,将使用预设的超参数配置。

    有效的str选项:[‘default’, ‘zeroshot’, ‘light’, ‘very_light’, ‘toy’, ‘multimodal’]

    ’default’: 默认的AutoGluon超参数,旨在获得强准确性,同时保持合理的磁盘使用和推理时间。用于‘medium_quality’预设。 ‘zeroshot’: 从TabRepo的200个数据集的集成模拟中学习到的强大模型组合。包含约100个模型,并用于‘best_quality’和‘high_quality’预设。 ‘light’: 生成较小的模型。通常会使推理速度更快,磁盘使用更低,但准确性较差。用于‘good_quality’预设。 ‘very_light’: 生成更小的模型。行为类似于‘light’,但在许多情况下,磁盘使用减少超过10倍,准确性进一步降低。 ‘toy’: 生成极小的模型。仅在原型设计时使用,因为模型质量将严重降低。 ‘multimodal’: [实验性] 训练一个多模态变压器模型以及表格模型。要求数据中出现一些文本列和GPU。

    当与‘best_quality’presets选项结合使用时,可以在包含文本列以及数值/分类列的多模态数据表中获得极强的结果。

    参考autogluon/tabular/configs/hyperparameter_configs.py以获取与每个预设相关的超参数信息。

    键是字符串,指示要训练的模型类型。
    稳定的模型选项包括:

    ’GBM’ (LightGBM) ‘CAT’ (CatBoost) ‘XGB’ (XGBoost) ‘RF’ (随机森林) ‘XT’ (极端随机树) ‘KNN’ (k近邻) ‘LR’ (线性回归) ‘NN_TORCH’ (Pytorch实现的神经网络) ‘FASTAI’ (FastAI后端的神经网络) ‘AG_AUTOMM’ (MultimodalPredictor 来自 autogluon.multimodal. 支持表格、文本和图像模态。需要GPU。)

    实验性模型选项包括:

    ’FT_TRANSFORMER’ (表格变压器,推荐使用GPU。不适用于超过100个特征的情况。) ‘FASTTEXT’ (FastText。注意:长时间未测试。) ‘TABPFN’ (TabPFN。不适用于超过100个特征或1000行的情况,且不支持回归。推理速度极慢。) ‘VW’ (VowpalWabbit。注意:长时间未测试。) ‘AG_TEXT_NN’ (多模态文本+表格模型,需要GPU。建议使用其继任者‘AG_AUTOMM’。) ‘AG_IMAGE_NN’ (图像模型,需要GPU。建议使用其继任者‘AG_AUTOMM’。)

    如果超参数中缺少某个键,则fit()将不会训练该类型的任何模型。从超参数中省略模型键等同于将该模型键包含在excluded_model_types中。 例如,设置hyperparameters = { ‘NN_TORCH’:{…} },如果你只想训练(PyTorch)神经网络而不训练其他类型的模型。

    值 = 每个模型类型的超参数设置的字典,或字典列表。

    每个超参数可以是单个固定值或包含多个可能值的搜索空间。 未指定的超参数将设置为默认值(或默认搜索空间,如果hyperparameter_tune_kwargs=’auto’)。 注意:如果hyperparameter_tune_kwargs=None(默认),任何提供的搜索空间都会出错。 要训练给定类型的多个模型,请将该值设置为超参数字典列表。

    例如,hyperparameters = {‘RF’: [{‘criterion’: ‘gini’}, {‘criterion’: ‘entropy’}]}将导致训练2个具有不同超参数的随机森林模型。

    高级功能:自带模型 / 自定义模型支持

    AutoGluon完全支持自定义模型。有关使用AutoGluon创建和使用自定义模型的详细教程,请参阅https://auto.gluon.ai/stable/tutorials/tabular/advanced/tabular-custom-model.html

    高级功能:自定义堆叠级别

    默认情况下,AutoGluon在堆叠集成期间在每个级别重复使用相同的模型和模型超参数。 要自定义此行为,请为每个堆叠级别单独创建超参数字典,然后将它们作为值添加到新字典中,键等于堆叠级别。

    示例:hyperparameters = {1: {‘RF’: rf_params1}, 2: {‘CAT’: [cat_params1, cat_params2], ‘NN_TORCH’: {}}} 这将导致一个堆叠集成,其中级别1有一个自定义随机森林,级别2有两个具有自定义超参数的CatBoost模型和一个默认神经网络,总共4个模型。

    如果hyperparameters中未指定某个级别,则默认使用最高指定级别来训练模型。这也可以通过添加‘default’键来显式控制。

    默认:
    hyperparameters = {

    ‘NN_TORCH’: {}, ‘GBM’: [

    {‘extra_trees’: True, ‘ag_args’: {‘name_suffix’: ‘XT’}}, {}, {

    ”learning_rate”: 0.03, “num_leaves”: 128, “feature_fraction”: 0.9, “min_data_in_leaf”: 3, “ag_args”: {“name_suffix”: “Large”, “priority”: 0, “hyperparameter_tune_kwargs”: None},

    },

    ], ‘CAT’: {}, ‘XGB’: {}, ‘FASTAI’: {}, ‘RF’: [

    {‘criterion’: ‘gini’, ‘ag_args’: {‘name_suffix’: ‘Gini’, ‘problem_types’: [‘binary’, ‘multiclass’]}}, {‘criterion’: ‘entropy’, ‘ag_args’: {‘name_suffix’: ‘Entr’, ‘problem_types’: [‘binary’, ‘multiclass’]}}, {‘criterion’: ‘squared_error’, ‘ag_args’: {‘name_suffix’: ‘MSE’, ‘problem_types’: [‘regression’]}},

    ], ‘XT’: [

    {‘criterion’: ‘gini’, ‘ag_args’: {‘name_suffix’: ‘Gini’, ‘problem_types’: [‘binary’, ‘multiclass’]}}, {‘criterion’: ‘entropy’, ‘ag_args’: {‘name_suffix’: ‘Entr’, ‘problem_types’: [‘binary’, ‘multiclass’]}}, {‘criterion’: ‘squared_error’, ‘ag_args’: {‘name_suffix’: ‘MSE’, ‘problem_types’: [‘regression’]}},

    ], ‘KNN’: [

    {‘weights’: ‘uniform’, ‘ag_args’: {‘name_suffix’: ‘Unif’}}, {‘weights’: ‘distance’, ‘ag_args’: {‘name_suffix’: ‘Dist’}},

    ],

    }

    有关每个模型可以指定的超参数的详细信息,请参阅以下文件:
    NN: autogluon.tabular.models.tabular_nn.hyperparameters.parameters

    注意:某些超参数设置可能会导致这些神经网络训练速度大大减慢。

    GBM: autogluon.tabular.models.lgb.hyperparameters.parameters

    另请参阅lightGBM文档:https://lightgbm.readthedocs.io/en/latest/Parameters.html

    CAT: autogluon.tabular.models.catboost.hyperparameters.parameters

    另请参阅CatBoost文档:https://catboost.ai/docs/concepts/parameter-tuning.html

    XGB: autogluon.tabular.models.xgboost.hyperparameters.parameters

    另请参阅XGBoost文档:https://xgboost.readthedocs.io/en/latest/parameter.html

    FASTAI: autogluon.tabular.models.fastainn.hyperparameters.parameters

    另请参阅FastAI文档:https://docs.fast.ai/tabular.learner.html

    RF: 请参阅sklearn文档:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

    注意:此模型的超参数调优已禁用。

    XT: 请参阅sklearn文档:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.html

    注意:此模型的超参数调优已禁用。

    KNN: 请参阅sklearn文档:https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html

    注意:此模型的超参数调优已禁用。

    LR: autogluon.tabular.models.lr.hyperparameters.parameters

    注意:此模型的超参数调优已禁用。 注意:‘penalty’参数可用于回归以指定正则化方法:支持‘L1’和‘L2’值。

    高级功能:自定义AutoGluon模型参数
    这些参数是可选的,可以在任何模型的超参数中指定。

    示例:hyperparameters = {‘RF’: {…, ‘ag_args’: {‘name_suffix’: ‘CustomModelSuffix’, ‘disable_in_hpo’: True}}

    ag_args: 与模型的元属性相关的自定义选项字典,例如其名称、训练顺序、有效的问题类型以及使用的HPO类型。
    有效键:

    name: (str) 模型的名称。如果存在,这将覆盖AutoGluon的命名逻辑和所有其他名称参数。 name_main: (str) 模型的主要名称。示例:‘RandomForest’。 name_prefix: (str) 向模型名称添加自定义前缀。默认未使用。 name_suffix: (str) 向模型名称添加自定义后缀。默认未使用。 priority: (int) 确定模型训练的顺序。较大的值会导致模型较早训练。默认值范围从100(KNN)到0(自定义),由模型类型决定。如果你希望此模型首先训练,请设置priority = 999。 problem_types: (list) 模型的有效问题类型列表。problem_types=[‘binary’]将导致仅在problem_type为‘binary’时训练模型。 disable_in_hpo: (bool) 如果为True,则仅在hyperparameter_tune_kwargs=None时训练模型。 valid_stacker: (bool) 如果为False,则不会将模型训练为级别2或更高级别的堆叠模型。 valid_base: (bool) 如果为False,则不会将模型训练为级别1(基础)模型。 hyperparameter_tune_kwargs: (dict) 请参阅TabularPredictor.fit() hyperparameter_tune_kwargs参数。如果在此处指定,将覆盖此模型的全局HPO设置。

    参考默认超参数以获取这些选项的示例用法。

    ag_args_fit: 与模型训练方式和约束相关的模型训练自定义选项字典。这些参数影响堆叠折叠模型,但不影响堆叠模型本身。

    澄清:time_limit是给定特定模型训练的内部时间(秒),部分由predictor.fit()期间给出的time_limit参数决定,但并不相同。 有效键:

    stopping_metric: (str 或 autogluon.core.metrics.Scorer, 默认=None) 用于模型早期停止的指标。如果为None,模型将决定。 max_memory_usage_ratio: (float, 默认=1.0) 相对于默认值允许的内存使用比率,超过此比率将导致早期停止或终止模型。大于1.0的值将更容易出现内存不足错误。 max_time_limit_ratio: (float, 默认=1.0) 在模型fit()期间使用的提供时间限制的比率。如果time_limit=10max_time_limit_ratio=0.3,则时间限制将更改为3。不会更改max_time_limit或min_time_limit值。 max_time_limit: (float, 默认=None) 允许此模型训练的最大时间(秒)。如果提供的时间限制大于此值,则将其替换为max_time_limit。 min_time_limit: (float, 默认=0) 允许此模型训练至少这么长时间(秒),无论其原本会获得的时间限制如何。

    如果min_time_limit >= max_time_limit,则时间限制将设置为min_time_limit。 如果min_time_limit=None,则时间限制将设置为None,模型将没有训练时间限制。

    num_cpus(int 或 str, 默认=’auto’)

    在模型训练期间使用的CPU数量。 如果为‘auto’,模型将决定。

    num_gpus(int 或 str, 默认=’auto’)

    在模型训练期间使用的GPU数量。 如果为‘auto’,模型将决定。某些模型可以使用GPU,但由于模型质量的差异,默认情况下不使用。 设置为0以禁用GPU使用。

    ag_args_ensemble: 所有模型共享的超参数字典,控制它们如何集成,如果启用了bag模式。
    有效键:
    use_orig_features: [True, False, “never”], 默认 True

    堆叠模型是否将使用原始特征以及堆叠特征进行训练(类似于跳跃连接)。 如果为True,将使用原始数据特征。 如果为False,将丢弃原始数据特征,仅使用堆叠特征,除非不存在堆叠特征(例如在级别1中)。 如果为“never”,将始终丢弃原始数据特征。将在级别1中跳过。

    valid_stackerbool, 默认 True

    如果为True,将被标记为有效以包含为堆叠模型。 如果为False,将仅作为基础模型(级别1)进行训练,不会在堆叠层(级别2+)中进行训练。

    max_base_modelsint, 默认 0

    其预测形成此堆叠模型特征输入的基础模型的最大数量。 如果可用基础模型超过max_base_models,则仅使用验证分数最高的前

  • feature_metadata (autogluon.tabular.FeatureMetadata 或 str, 默认 = ‘infer’) – 用于特征预处理中各种内部逻辑的特征元数据。 如果为‘infer’,将根据train_data的属性自动构建一个FeatureMetadata对象。 在这种情况下,train_data被输入到autogluon.tabular.FeatureMetadata.from_df()中以推断feature_metadata。 如果‘infer’错误地假设了特征的数据类型,请考虑显式指定feature_metadata

  • infer_limit (float, default = None) – 在拟合过程中每行的推理时间限制(以秒为单位)。 如果 infer_limit=0.05 且 infer_limit_batch_size=1000,AutoGluon 将避免训练那些在给定 1000 行数据进行预测时每行预测时间超过 50 毫秒的模型(必须在不超过 50 秒的时间内预测 1000 行)。 如果启用了 bagging,推理时间限制将基于调用 refit_full 后 _FULL 模型的估计推理速度,而不是基于 bagged 集成模型的推理速度。 为模型计算的推理时间假设在拟合后调用了 predictor.persist(‘all’)。 如果为 None,则不强制执行任何限制。 如果无法满足约束条件,将引发异常。

  • infer_limit_batch_size (int, default = None) – 用于批量预测以估计每行推理时间的批量大小。 必须是一个大于0的整数。 如果为None且指定了infer_limit,则默认为10000。 除非必须满足在线推理场景,否则建议设置为10000。 较小的值,特别是infer_limit_batch_size=1,将导致每行推理时间大大增加,应尽可能避免。 有关如何使用此参数的更多详细信息,请参阅infer_limit。 如果在infer_limit=None时指定,推理时间将在训练期间记录,但不会受到限制。

  • fit_weighted_ensemble (bool, default = True) – If True, a WeightedEnsembleModel will be fit in each stack layer. A weighted ensemble will often be stronger than an individual model while being very fast to train. It is recommended to keep this value set to True to maximize predictive quality.

  • fit_full_last_level_weighted_ensemble (bool, default = True) – If True, the WeightedEnsembleModel of the last stacking level will be fit with all (successful) models from all previous layers as base models. If stacking is disabled, settings this to True or False makes no difference because the WeightedEnsembleModel L2 always uses all models from L1. It is recommended to keep this value set to True to maximize predictive quality.

  • full_weighted_ensemble_additionally (bool, default = False) – If True, AutoGluon will fit two WeightedEnsembleModels after training all stacking levels. Setting this to True, simulates calling fit_weighted_ensemble() after calling fit(). Has no affect if fit_full_last_level_weighted_ensemble is False and does not fit an additional WeightedEnsembleModel if stacking is disabled.

  • dynamic_stacking (bool | str, default = False) – 如果为True且num_stack_levels > 0,AutoGluon将通过首先验证AutoGluon的堆叠行为来动态确定是否使用堆叠。这样做是为了避免所谓的堆叠过拟合,这种过拟合可能导致AutoGluon中使用的传统多层堆叠严重失败并产生不可靠的验证分数。 建议在使用堆叠时将此值设置为True或“auto”,只要不知道数据是否受到堆叠过拟合的影响。 如果已知数据不受堆叠过拟合的影响,则将此值设置为False预计将最大化预测质量。 如果启用,默认情况下,AutoGluon通过花费提供的时间限制的25%进行检测,并将所有剩余时间用于拟合AutoGluon来执行动态堆叠。这可以通过指定ds_args并使用不同的参数来fit()进行调整。 如果为“auto”,将设置为not use_bag_holdout。 有关更多信息,请参阅ds_args的文档。

  • calibrate_decision_threshold (bool | str, default = "auto") – 如果为True,将在fit结束时自动校准决策阈值,以便在调用.predict时基于评估指标进行调整。 如果为“auto”,当eval_metric.needs_class=Trueproblem_type=”binary”时,将自动设置为True。 默认情况下,决策阈值为0.5,但对于某些指标如f1balanced_accuracy, 选择不同于0.5的阈值可以显著提高分数。 仅适用于problem_type=’binary’。对于其他问题类型将被忽略。

  • num_cpus (int | str, default = "auto") – 您希望AutoGluon预测器使用的CPU总数。 auto表示AutoGluon将根据可用CPU总数和模型需求来决定最佳性能。 用户通常不需要设置此值

  • num_gpus (int | str, default = "auto") – 您希望AutoGluon预测器使用的GPU总数。 auto表示AutoGluon将根据可用的GPU总数和模型性能需求做出最佳决策。 用户通常不需要设置此值

  • fit_strategy (Literal["sequential", "parallel"], default = "sequential") –

    用于拟合模型的策略。 如果选择“sequential”,模型将按顺序拟合。这是最稳定的选项,日志记录最易读。 如果选择“parallel”,模型将使用ray并行拟合,并在它们之间分配可用的计算资源。

    注意:“parallel”是实验性的,可能会遇到问题。它首次在1.2.0版本中添加。

    对于具有16个或更多CPU核心的机器,“parallel”可能会比“sequential”更快。

    在1.2.0版本中添加。

  • memory_limit (float | str, default = "auto") – The total amount of memory in GB you want AutoGluon predictor to use. “auto” means AutoGluon will use all available memory on the system (that is detectable by psutil). Note that this is only a soft limit! AutoGluon uses this limit to skip training models that are expected to require too much memory or stop training a model that would exceed the memory limit. AutoGluon does not guarantee the enforcement of this limit (yet). Nevertheless, we expect AutoGluon to abide by the limit in most cases or, at most, go over the limit by a small margin. For most virtualized systems (e.g., in the cloud) and local usage on a server or laptop, “auto” is ideal for this parameter. We recommend manually setting the memory limit (and any other resources) on systems with shared resources that are controlled by the operating system (e.g., SLURM and cgroups). Otherwise, AutoGluon might wrongly assume more resources are available for fitting a model than the operating system allows, which can result in model training failing or being very inefficient.

  • callbacks (List[AbstractCallback], default = None) –

    :::{warning} 回调是一个实验性功能,可能会在未来的版本中更改而不发出警告。 回调支持是初步的,主要面向开发者。 ::: 一个继承自 autogluon.core.callbacks.AbstractCallback 的回调对象列表。 这些对象将在训练器中的每个模型拟合之前和之后被调用。 它们有能力跳过模型或提前停止训练过程。 理论上,它们还可以通过与传递的 trainer 对象交互来改变训练器代码的整个逻辑流程。 有关更多详细信息,请参阅 AbstractCallback 源代码。 如果为 None,则不会使用任何回调对象。

    [注意] 如果回调对象是有状态的,它们可能会在拟合调用中被就地修改。 确保在多次拟合调用之间避免重复使用已修改的回调对象。

    [注意] 回调对象在拟合调用结束时从训练器中删除。它们不会影响诸如 refit_fullfit_extra 等操作。

  • **kwargs

    auto_stackbool, 默认 = False

    AutoGluon是否应自动利用装袋和多层堆叠集成来提高预测准确性。 如果您愿意容忍更长的训练时间以最大化预测准确性,请将此设置为True! 根据数据集属性自动设置num_bag_foldsnum_stack_levels参数。 注意:设置num_bag_foldsnum_stack_levels参数将覆盖auto_stack。 注意:这可能会将训练时间(和推理时间)增加多达20倍,但可以大大改善预测性能。

    num_bag_foldsint, 默认 = None

    用于模型装袋的折叠数。当num_bag_folds = k时,训练时间大约增加k倍(设置为0以禁用装袋)。 默认情况下禁用(0),但我们建议使用5-10之间的值以最大化预测性能。 增加num_bag_folds将导致模型偏差较低,但更容易过拟合。 num_bag_folds = 1是无效值,并将引发ValueError。 值> 10可能会产生递减的回报,甚至由于过拟合而损害整体结果。 为了进一步改善预测,避免将num_bag_folds增加到10以上,而是增加num_bag_sets

    num_bag_setsint, 默认 = None

    执行的kfold装袋重复次数(值必须>= 1)。装袋期间训练的总模型数= num_bag_folds * num_bag_sets。 未指定时默认为1。如果num_bag_folds<=2,则忽略该值。 大于1的值将导致更好的预测性能,特别是在较小的问题上并且启用了堆叠(减少整体方差)。 请注意:这将大大增加整体运行时间,如果使用时间限制,通常会导致性能下降。 建议仅在最后手段时增加此值,因为这是提高性能的计算效率最低的方法。

    num_stack_levelsint, 默认 = None

    在堆叠集成中使用的堆叠层数。大约将模型训练时间增加num_stack_levels+1倍(设置为0以禁用堆叠集成)。 默认情况下禁用(0),但我们建议num_stack_levels=1以最大化预测性能。 为了防止过拟合,还必须设置num_bag_folds >= 2,否则将引发ValueError。

    delay_bag_setsbool, 默认 = False

    控制在时间限制下AutoGluon何时执行kfold装袋的重复。 我们建议坚持False以避免过拟合。

    如果为True,AutoGluon将延迟重复kfold装袋,直到评估所有模型

    来自hyperparameters,如果有足够的时间。这允许AutoGluon探索 更多的超参数以获得更好的最终性能,但可能导致 更多的过拟合。

    如果为False,AutoGluon在评估每个模型后立即重复kfold装袋。

    因此,AutoGluon可能会评估较少的模型,减少过拟合。

    holdout_fracfloat, 默认 = None

    作为调优数据保留的train_data的分数,用于优化超参数(除非tuning_data = None,否则忽略,如果num_bag_folds != 0,除非use_bag_holdout == True)。 默认值(如果为None)根据训练数据中的行数选择。默认值范围从2,500行的0.2到250,000行的0.01。 如果设置了hyperparameter_tune_kwargs,则默认值加倍,最大为0.2。 如果num_bag_folds >= 2,则禁用,除非use_bag_holdout == True

    use_bag_holdoutbool | str, 默认 = False

    如果为True,则从模型装袋中保留holdout_frac部分数据。 此保留数据仅用于评分模型并确定加权集成权重。 如果在堆叠模型中score_val和score_test之间存在较大差距,请启用此功能。 注意:如果指定了tuning_data,则tuning_data用作保留数据。 如果未装袋,则禁用。 如果为“auto”,则如果训练数据有>= 1000000行,则设置为True,否则设置为False。

    hyperparameter_tune_kwargsstr or dict, 默认 = None

    超参数调优策略和kwargs(例如,运行多少HPO试验)。 如果为None,则不执行超参数调优。 您可以选择提供预设

    有效的预设值:

    ’auto’:通过贝叶斯优化搜索在NN_TORCH和FASTAI模型上执行HPO,并使用本地调度程序在其他模型上执行随机搜索。 ‘random’:使用本地调度程序通过随机搜索执行HPO。

    或提供dict以指定搜索器和调度程序
    有效的键:

    ’num_trials’:运行多少HPO试验 ‘scheduler’:使用哪个调度程序

    有效的值:

    ’local’:按FIFO调度试验的本地调度程序

    ’searcher’:使用哪个搜索算法

    ’local_random’:使用‘random’搜索器 ‘random’:执行随机搜索 ‘auto’:在NN_TORCH和FASTAI模型上执行贝叶斯优化搜索。在其他模型上执行随机搜索。

    提供dict时需要‘scheduler’和‘searcher’键。 一个有效的dict示例:

    hyperparameter_tune_kwargs = {

    ‘num_trials’: 5, ‘scheduler’ : ‘local’, ‘searcher’: ‘auto’,

    }

    feature_prune_kwargs: dict, 默认 = None

    通过递归特征消除和置换特征重要性执行分层特征修剪。 这会在堆叠层中拟合所有模型一次,发现修剪后的特征集,再次使用修剪后的特征集拟合堆叠层中的所有模型,并更新验证分数提高的模型的输入特征列表。 如果为None,则不执行特征修剪。如果为空字典,则使用默认配置执行特征修剪。 有关有效字典键,请参阅autogluon.core.utils.feature_selection.FeatureSelectorautogluon.core.trainer.abstract_trainer.AbstractTrainer._proxy_model_feature_prune文档。 要强制所有模型使用修剪后的特征集,请在字典中设置force_prune=True。

    ag_argsdict, 默认 = None

    传递给所有模型的关键字参数(即所有AutoGluon模型共享的常见超参数)。 有关有效值,请参阅hyperparameters参数文档中的“高级功能:自定义AutoGluon模型参数”中的ag_args参数。 与在hyperparameters中为所有模型指定ag_args参数相同。 如果ag_args中的键已在hyperparameters中为模型指定,则不会通过此参数更改。

    ag_args_fitdict, 默认 = None

    传递给所有模型的关键字参数。 有关有效值,请参阅hyperparameters参数文档中的“高级功能:自定义AutoGluon模型参数”中的ag_args_fit参数。 与在hyperparameters中为所有模型指定ag_args_fit参数相同。 如果ag_args_fit中的键已在hyperparameters中为模型指定,则不会通过此参数更改。

    ag_args_ensembledict, 默认 = None

    传递给所有模型的关键字参数。 有关有效值,请参阅hyperparameters参数文档中的“高级功能:自定义AutoGluon模型参数”中的ag_args_ensemble参数。 与在hyperparameters中为所有模型指定ag_args_ensemble参数相同。 如果ag_args_ensemble中的键已在hyperparameters中为模型指定,则不会通过此参数更改。

    ds_argsdict, 见下面的默认值

    动态堆叠的关键字参数,仅在dynamic_stacking=True时使用。这些关键字参数控制动态堆叠的行为 并确定AutoGluon如何尝试检测堆叠过拟合。为了检测堆叠过拟合,AutoGluon将在子集(用于保留)或多个子集(用于重复交叉验证)上拟合自身(所谓的子拟合) 并使用AutoGluon在验证数据上的预测来检测堆叠过拟合。如果任何子拟合显示堆叠过拟合,则子拟合停止并禁用堆叠。 允许的键和值为:

    detection_time_fracfloat in (0,1), 默认 = 1/4

    确定用于检测堆叠过拟合的原始训练时间的多少。 当使用(重复)交叉验证时,每个子拟合将拟合1/n_splits * detection_time_frac * time_limit。 如果未给AutoGluon设置时间限制,则忽略此参数,并且AutoGluon在子拟合中无时间限制地拟合。

    validation_procedure: str, 默认 = ‘holdout’
    确定用于检测堆叠过拟合的验证程序。可以是cvholdout

    如果validation_procedure=’holdout’且未指定holdout_data(默认),则holdout_frac确定保留数据。 如果validation_procedure=’holdout’且指定了holdout_data,则使用提供的holdout_data进行验证。 如果validation_procedure=’cv’n_foldsn_repeats确定交叉验证程序的类型。

    holdout_fracfloat in (0,1), 默认 = 1/9

    确定在保留验证期间用于保留数据的原始训练数据的多少。 如果holdout_data不为None,则忽略。

    n_foldsint in [2, +inf), 默认 = 2

    用于交叉验证的折叠数。

    n_repeatsint [1, +inf), 默认 = 1

    用于重复交叉验证的重复次数。如果设置为1,则执行1次重复交叉验证,相当于 无重复的交叉验证。

    memory_safe_fitsbool, 默认 = True

    如果为True,AutoGluon将在基于ray的子进程中运行每个子拟合,以避免由于Python的垃圾回收器不足而导致的内存泄漏。

    clean_up_fitsbool, 默认 = True

    如果为True,AutoGluon将从磁盘中删除所有保存的子拟合信息。 如果为False,子拟合将保留在磁盘上,并且self._sub_fits将存储子拟合的路径,可以使用TabularPredictor.load()像从磁盘加载任何其他预测器一样加载。

    enable_ray_loggingbool, 默认 = True

    如果为True,将在使用ray时记录动态堆叠子拟合(memory_safe_fits=True)。 请注意,由于ray的工作方式,这可能会导致动态堆叠完成后在主拟合过程中产生额外的日志记录。

    enable_callbacksbool, 默认 = False

    如果为True,将对指定的用户回调执行深拷贝,并在DyStack调用期间启用它们。 如果为False,则不会在DyStack调用中包含回调。

    holdout_data: str or pd.DataFrame, 默认 = None

    另一个包含用于检测堆叠过拟合的验证数据的数据集。此数据集应与train_data格式相同。 如果传递str,holdout_data将使用str值作为文件路径加载。 如果holdout_data不为None,则子拟合将在所有train_data上拟合,完整拟合将在所有train_dataholdout_data组合上拟合。

    included_model_typeslist, 默认 = None

    仅在fit()期间训练列出的模型类型。 列在included_model_types中但未列在hyperparameters中的模型将被忽略。 有关每个值对应的模型,请参阅hyperparameters文档。 当只需要训练模型子集且hyperparameters字典难以或耗时创建时非常有用。

    示例:要包括‘GBM’和‘FASTAI’模型,请指定included_model_types=[‘GBM’, ‘FASTAI’]

    excluded_model_typeslist, 默认 = None

    禁止在fit()期间训练的模型类型子集,即使存在于hyperparameters中。 有关每个值对应的模型,请参阅hyperparameters文档。 当不希望训练特定模型类型(如‘KNN’或‘custom’)但难以或耗时修改hyperparameters字典时非常有用。

    示例:要排除‘KNN’和‘custom’模型,请指定excluded_model_types=[‘KNN’, ‘custom’]

    refit_fullbool or str, 默认 = False

    是否在正常训练过程后重新训练所有模型(训练+验证)。 这相当于在fit之后调用predictor.refit_full(model=refit_full)。 如果refit_full=True,则视为refit_full=’all’。 如果refit_full=False,则不进行重新训练。 有效的str值:

    all:重新训练所有模型。 best:仅重新训练最佳模型(如果它是堆叠模型,则包括其祖先)。 {model_name}:仅重新训练指定模型(如果它是堆叠模型,则包括其祖先)。

    对于装袋模型:

    通过将装袋集成折叠为在训练数据上拟合的

Return type:

TabularPredictor 对象。返回自身。

示例

>>> from autogluon.tabular import TabularDataset, TabularPredictor
>>> train_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv')
>>> label = 'class'
>>> predictor = TabularPredictor(label=label).fit(train_data)
>>> test_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv')
>>> leaderboard = predictor.leaderboard(test_data)
>>> y_test = test_data[label]
>>> test_data = test_data.drop(columns=[label])
>>> y_pred = predictor.predict(test_data)
>>> perf = predictor.evaluate_predictions(y_true=y_test, y_pred=y_pred)

为了最大化预测性能,请使用以下内容:

>>> eval_metric = 'roc_auc'  # set this to the metric you ultimately care about
>>> time_limit = 3600  # set as long as you are willing to wait (in sec)
>>> predictor = TabularPredictor(label=label, eval_metric=eval_metric).fit(train_data, presets=['best_quality'], time_limit=time_limit)