autogluon.tabular.TabularPredictor¶
- class autogluon.tabular.TabularPredictor(label: str, problem_type: str = None, eval_metric: str | Scorer = None, path: str = None, verbosity: int = 2, log_to_file: bool = False, log_file_path: str = 'auto', sample_weight: str = None, weight_evaluation: bool = False, groups: str = None, positive_class: int | str | None = None, **kwargs)[source]¶
AutoGluon TabularPredictor 预测表格数据集中某一列的值(分类或回归)。
- Parameters:
标签 (str) – 包含要预测的目标变量的列的名称。
problem_type (str, default = None) – 预测问题的类型,即这是一个二元/多元分类还是回归问题(选项:‘binary’,‘multiclass’,‘regression’,‘quantile’)。 如果 problem_type = None,预测问题类型将根据提供的数据集中的标签值进行推断。
eval_metric (str 或 Scorer, 默认 = None) –
用于在测试数据上最终评估预测结果的指标。 AutoGluon 会调整超参数、早停、集成权重等因素,以在验证数据上提高此指标。
如果 eval_metric = None,则会根据 problem_type 自动选择。 对于二分类和多分类问题,默认值为‘accuracy’,对于回归问题,默认值为‘root_mean_squared_error’,对于分位数回归,默认值为‘pinball_loss’。
- 其他分类选项:
[‘accuracy’, ‘balanced_accuracy’, ‘log_loss’, ‘f1’, ‘f1_macro’, ‘f1_micro’, ‘f1_weighted’, ‘roc_auc’, ‘roc_auc_ovo’, ‘roc_auc_ovo_macro’, ‘roc_auc_ovo_weighted’, ‘roc_auc_ovr’, ‘roc_auc_ovr_macro’, ‘roc_auc_ovr_micro’, ‘roc_auc_ovr_weighted’, ‘average_precision’, ‘precision’, ‘precision_macro’, ‘precision_micro’, ‘precision_weighted’, ‘recall’, ‘recall_macro’, ‘recall_micro’, ‘recall_weighted’, ‘mcc’, ‘pac_score’]
- 回归选项:
[‘root_mean_squared_error’, ‘mean_squared_error’, ‘mean_absolute_error’, ‘median_absolute_error’, ‘mean_absolute_percentage_error’, ‘r2’, ‘symmetric_mean_absolute_percentage_error’]
有关这些选项的更多信息,请参阅 sklearn.metrics: https://scikit-learn.org/stable/modules/classes.html#sklearn-metrics-metrics 有关指标源代码,请参阅 autogluon.core.metrics。
您也可以在此处传递自己的评估函数,只要它遵循 autogluon.core.metrics 文件夹中定义的函数格式。 有关创建和使用自定义指标的详细说明,请参阅 https://auto.gluon.ai/stable/tutorials/tabular/advanced/tabular-custom-metric.html
path (Union[str, pathlib.Path], default = None) – 保存模型和中间输出的目录路径。 如果未指定,将在工作目录中创建一个名为“AutogluonModels/ag-[TIMESTAMP]”的时间戳文件夹来存储所有模型。 注意:要调用fit()两次并保存每次拟合的所有结果,您必须指定不同的path位置或根本不指定path。 否则,第一次fit()的文件将被第二次fit()覆盖。
verbosity (int, default = 2) –
详细程度级别从0到4,控制打印的信息量。 较高的级别对应更详细的打印语句(你可以设置verbosity = 0来抑制警告)。 如果使用日志记录,你也可以通过logger.setLevel(L)来控制打印的信息量, 其中L的范围从0到50(注意:L的较高值对应较少的打印语句,与详细程度级别相反)。 详细程度级别:
0: 仅记录异常 1: 仅记录警告和异常 2: 标准日志记录 3: 详细日志记录(例如:每50次迭代记录验证分数) 4: 最大详细日志记录(例如:每次迭代记录验证分数)
log_to_file (bool, default = False) – 是否将日志保存到文件中以供后续参考
log_file_path (str, default = "auto") – 保存日志的文件路径。 如果为auto,日志将保存在predictor_path/logs/predictor_log.txt下。 如果log_to_file设置为False,则忽略此设置。
sample_weight (str, default = None) – 如果指定,此列名表示应将数据的哪一列视为样本权重。此列将不被视为预测特征。 样本权重应为非负数(且不能为nan),较大的值表示哪些行比其他行更重要。 如果您希望样本权重的使用与此Predictor之外获得的结果相匹配,请确保训练(或调优)数据的样本权重总和等于训练(或调优)数据的行数。 您还可以指定两个特殊字符串:‘auto_weight’(根据数据自动选择加权策略)或‘balance_weight’(在分类中均衡权重,在回归中无效)。如果指定自己的sample_weight列,请确保其名称与这些特殊字符串不匹配。
weight_evaluation (bool, default = False) – 仅在sample_weight列不为None时考虑。确定在计算验证/测试数据的评估指标时是否应考虑样本权重。 如果为True,则将根据指定的sample_weight中的样本权重报告加权指标(在这种情况下,测试数据中还必须存在sample_weight列)。 在这种情况下,默认用于预测的“最佳”模型也将基于评估指标的加权版本决定。 注意:当sample_weight为‘auto_weight’或‘balance_weight’时,我们不建议指定weight_evaluation,而是指定适当的eval_metric。
groups (str, default = None) –
[实验性] 如果指定,AutoGluon 将在 .fit 期间使用 train_data 中名为 groups 的列作为数据分割索引,用于 bagging 的目的。 该列在模型训练期间不会用作特征。 如果未启用 bagging,则忽略此参数。要在禁用 bagging 的情况下指定自定义验证集,请在 .fit 中指定 tuning_data。 数据将通过 sklearn.model_selection.LeaveOneGroupOut 进行分割。 使用此选项可以控制 AutoGluon 使用的确切分割索引。 除非在非常特定的情况下需要,否则不建议使用此选项。 如果提供的 groups 无法正确训练模型(例如在多类分类中训练期间未出现所有类别),则可能会出现边缘情况下的错误。用户需要自行清理其 groups。
例如,如果您希望数据折叠保留表中相邻的行而不进行洗牌,那么对于 6 行数据的 3 折 bagging,groups 列的值应为 [0, 0, 1, 1, 2, 2]。
positive_class (str 或 int, 默认 = None) –
用于确定二分类中的正类。 这用于某些指标,如‘f1’,根据哪个类被视为正类,会产生不同的分数。 如果未设置,将在对现有唯一类进行排序后推断为第二个元素。
如果类是 [0, 1],则 1 将被选为正类。 如果类是 [‘def’, ‘abc’],则 ‘def’ 将被选为正类。 如果类是 [True, False],则 True 将被选为正类。
**kwargs –
- learner_typeAbstractLearner, default = DefaultLearner
一个继承自 AbstractLearner 的类。这决定了预测器的内部逻辑。 如果你不知道这是什么,保持默认值。
- learner_kwargsdict, default = None
传递给学习器的参数。选项包括:
- ignored_columnslist, default = None
预测器不能用作预测特征的列名的禁止子集(例如行的唯一标识符或用户ID)。 这些列在 fit() 期间被忽略。
- label_count_thresholdint, default = 10
对于多类分类问题,这是标签在数据集中必须出现的最小次数,才能被视为输出类。 AutoGluon 将忽略任何标签在数据集中出现次数少于该值的类(即永远不会预测它们)。
- cache_databool, default = True
启用时,训练和验证数据将保存到磁盘以供将来重用。 启用预测器中的高级功能,例如 fit_extra() 和原始数据的特征重要性计算。
- trainer_typeAbstractTrainer, default = AutoTrainer
一个继承自 AbstractTrainer 的类,控制许多模型的训练/集成。 如果你不知道这是什么,保持默认值。
- __init__(label: str, problem_type: str = None, eval_metric: str | Scorer = None, path: str = None, verbosity: int = 2, log_to_file: bool = False, log_file_path: str = 'auto', sample_weight: str = None, weight_evaluation: bool = False, groups: str = None, positive_class: int | str | None = None, **kwargs)[source]¶
方法
在二元分类中校准决策阈值,以优化给定的指标。
将预测器及其所有工件克隆到本地磁盘上的新位置。
将预测器及其所有工件克隆到本地磁盘上的新位置,然后删除在预测期间不必要的克隆工件。
编译模型以加速预测。
从predictor中删除模型。这有助于最小化内存使用和磁盘使用,特别是在模型部署时。这将删除predictor中对模型的所有引用。例如,删除的模型将不会出现在predictor.leaderboard()中。警告:如果delete_from_disk=True,这将删除已删除模型目录中的所有文件,无论它们是否由AutoGluon创建。请勿在模型目录中存储与AutoGluon无关的文件。
Returns the combined size of all files under the predictor.path directory in bytes.
返回predictor.path目录下每个文件的大小,单位为字节。
[实验性] 将AutoGluon最准确的集成预测器提炼为更简单/更快且需要更少内存/计算资源的单一模型。
报告在给定数据集上评估的预测性能。
评估提供的预测概率与真实标签的对比。
通过排列重要性计算给定模型的特征重要性分数。
返回依赖于feature_stage值的特征名称列表。
拟合模型以基于其他列(特征)预测数据表的某一列(标签)。
在原始的
TabularPredictor.fit()调用之后,拟合额外的模型。[高级] 使用额外的数据(pseudo_data)来尝试提高模型质量。
Output summary of information about models produced during fit().
拟合新的加权集成模型以组合先前训练模型的预测。
[实验性] 返回一个包含预测器元数据的字典。警告:此功能目前处于预览模式。返回的元数据信息在未来的版本中可能会在结构上发生变化,且不另行通知。各种元数据值的定义尚未记录。此函数的输出不应用于编程决策。包含诸如行数、列数、模型训练时间、验证分数、超参数等信息。
输出在fit()期间生成的模型信息的摘要,作为
pd.DataFrame。包括所有模型的测试和验证分数、模型训练时间、推理时间和堆栈级别的信息。输出DataFrame的列包括:'model': 模型的名称。检索在predictor.fit()期间生成的学习曲线。
从文件中加载先前由fit()生成的TabularPredictor对象并返回该对象。
加载模型训练期间使用的内部数据表示。像神经网络这样的单个AutoGluon模型可能会应用未在此方法中反映的额外特征转换。此方法仅适用于所有AutoGluon模型采用的通用转换。警告,内部表示可能:与原始数据相比具有不同的特征。与原始数据相比具有不同的行数。具有与原始数据不对齐的索引。具有与原始数据中不同的标签值。内部数据表示不应与原始数据结合使用,在大多数情况下这是不可能的。
加载预测器的日志文件
[高级] 获取在拟合此模型期间发生的模型失败情况,以pandas DataFrame的形式。
Returns the list of model names trained in this predictor object.
返回一个原始模型名称到重新拟合完整模型名称的字典。
将模型持久化在内存中以减少推理延迟。
输出由fit()训练的模型的可视化堆叠集成架构。
Use trained models to produce predictions of label column values for new data.
给定预测概率,转换为预测结果。
返回一个预测字典,其中键是模型名称,值是模型对数据的预测概率。
注意:这是高级功能,不适用于常规使用。
使用训练好的模型生成预测的类别概率,而不是类别标签(如果任务是分类)。
返回一个预测概率的字典,其中键是模型名称,值是模型对数据的预测概率。
注意:这是高级功能,不适用于常规使用。
在所有数据上重新训练模型(训练+验证)。对于打包模型:通过将打包的集成模型折叠为在所有训练数据上拟合的单个模型来优化模型的推理时间。此过程通常会导致精度略有下降,但推理速度大幅提升。推理速度通常比原始打包集成模型快10-200倍。推理加速因子相当于(k * n),其中k是折叠次数(num_bag_folds),n是打包集成中完成的重复次数(num_bag_sets)。运行时间通常为原始拟合运行时间的10%或更少。运行时间可以粗略估计为原始拟合运行时间的1 / (k * n),其中k和n如上定义。对于非打包模型:通过在不使用验证集的情况下在100%的数据上重新训练来优化模型的精度。通常会导致精度略有提高,但推理时间不变。运行时间将大致等于原始拟合运行时间。此过程不会改变原始模型,而是添加额外的模型。如果堆叠模型通过此过程重新拟合,它们将在推理期间使用祖先模型的refit_full版本。此过程生成的模型将没有验证分数,因为它们使用所有数据进行训练。因此,用户需要通过包含测试数据来确定模型的质量是否足够,例如在predictor.leaderboard(test_data)中。如果用户没有额外的测试数据,则应参考原始模型的分数以估计refit_full模型的性能。警告:请注意,在没有单独验证测试数据的情况下使用refit_full模型意味着模型未经测试,并且不能保证与原始模型一致。必须在原始训练期间将cache_data设置为True才能启用此功能。
将此预测器保存到此预测器的path指定的目录中的文件。
通过删除不需要用于新数据预测的辅助模型文件,减少预测器的内存和磁盘大小。
设置 predictor.decision_threshold。
设置默认使用的模型,当调用predictor.predict(data)时。
[高级] 计算并返回执行零样本HPO模拟所需的信息。
通过AutoGluon特征生成器转换数据特征。这对于理解AutoGluon如何解释数据特征非常有用。此函数的输出可用于训练更多模型,甚至在AutoGluon之外。这对于在AutoGluon相同的数据表示上训练自己的模型非常有用。像神经网络这样的单个AutoGluon模型可能会应用此方法中未反映的额外特征转换。此方法仅应用所有AutoGluon模型采用的通用转换。当data=None,`base_models=[{best_model}],并且在fit()期间启用了bagging时:这将返回最佳模型的折叠外预测,这些预测可以用作自定义用户堆叠模型的训练输入。
将数据标签转换为内部标签表示。
取消持久化模型以减少内存使用。
属性
can_predict_proba如果预测器可以通过 .predict_proba 返回预测概率,则返回 True,否则返回 False。
class_labels别名到 self.classes_
class_labels_internal对于多类问题,此列表包含按内部predict_proba()输出排序的内部类标签。对于二分类问题,此列表包含按内部predict_proba(as_multiclass=True)输出排序的内部类标签。对于二分类问题,值始终为class_labels_internal=[0, 1],其中0为负类,1为正类。对于其他问题类型,将等于None。
class_labels_internal_map对于二分类和多分类问题,此字典包含原始标签到内部标签的映射。例如,在二分类中,标签值'True'和'False'将被映射到内部表示1和0。因此,class_labels_internal_map将等于{'True': 1, 'False': 0}。对于其他问题类型,将等于None。对于多分类,可能并非所有标签值都有映射。这表明内部模型将永远不会预测那些缺失的标签,并且与缺失标签相关的训练行已被删除。
classes_对于多类问题,此列表包含按predict_proba()输出排序的类标签。对于二分类问题,此列表包含按predict_proba(as_multiclass=True)输出排序的类标签。classes_[0]对应于内部标签 = 0(负类),classes_[1]对应于内部标签 = 1(正类)。这对于某些指标(如F1)是相关的,其中真标签和假标签对指标分数的影响不同。对于其他问题类型,将等于None。例如,如果pred = predict_proba(x, as_multiclass=True),则pred的第i个索引提供了x属于classes_[i]给出的类的预测概率。
decision_threshold用于将预测概率转换为预测的决策阈值。
eval_metric用于评估预测性能的指标
feature_metadata返回内部的FeatureMetadata。
feature_metadata_in返回输入的FeatureMetadata。
has_val如果在拟合过程中使用了保留验证数据,则返回True,否则返回False。
is_fit如果已经调用了predictor.fit,则返回True,否则返回False。
label标签、响应变量、目标变量、因变量、y等。
model_best返回可以通过验证分数推断的最佳模型的字符串模型名称。
original_features用户传入的原始特征在预处理前用于拟合
path存储此Predictor使用的所有模型的目录路径
positive_class返回二分类中的正类名称。
predictor_file_nameproblem_type此预测器已针对哪种类型的预测问题进行训练
quantile_levels