autogluon.features

特征生成器

AbstractFeatureGenerator

所有AutoGluon特征生成器继承的抽象特征生成器实现。

AutoMLPipelineFeatureGenerator

具有简化参数的管道特征生成器,能够充分处理包括文本和日期在内的大多数表格数据。

PipelineFeatureGenerator

PipelineFeatureGenerator 是 BulkFeatureGenerator 的一个实现,具有各种智能默认值和边缘情况处理功能,以实现稳健的数据处理。建议用户在构建用于端到端数据转换的任何自定义特征生成器时,以 PipelineFeatureGenerator 为基础。参考 AutoMLPipelineFeatureGenerator 以获取扩展 PipelineFeatureGenerator 的示例。不建议将 PipelineFeatureGenerator 用作任何其他生成器的前置或后置生成器中的生成器。

BulkFeatureGenerator

BulkFeatureGenerator 用于复杂的特征生成管道,其中需要多个生成器,某些生成器需要其他生成器的输出作为输入(多阶段生成)。

AsTypeFeatureGenerator

对数据进行类型转换以匹配拟合期间看到的类型。

BinnedFeatureGenerator

BinnedFeatureGenerator 将输入的整数和浮点数特征分箱为 num_bins 个唯一的整数值,保持相对排序顺序。

CategoryFeatureGenerator

CategoryFeatureGenerator 用于将对象类型转换为类别类型,以及移除稀有类别并优化内存使用。

DatetimeFeatureGenerator

将日期时间特征转换为数值特征。

DropDuplicatesFeatureGenerator

删除与其他特征完全重复的特征,只保留数据的一个实例。

DropUniqueFeatureGenerator

删除那些只有一个唯一值或几乎没有重复值(基于max_unique_ratio)并且是类别或对象类型的特征。

DummyFeatureGenerator

忽略所有输入特征并返回一个所有值为0的单个整数特征。

FillNaFeatureGenerator

填补数据中的缺失值。

IdentityFeatureGenerator

IdentityFeatureGenerator 只是简单地传递数据而不进行任何更改。

LabelEncoderFeatureGenerator

通过映射到类别代码,将类别特征转换为整数特征。

CategoryMemoryMinimizeFeatureGenerator

通过将类别值转换为单调递增的整数值,最小化类别特征的内存使用。

NumericMemoryMinimizeFeatureGenerator

裁剪并转换整数特征的dtype以最小化内存使用。

RenameFeatureGenerator

RenameFeatureGenerator 重命名列而不改变它们的值。

TextNgramFeatureGenerator

从文本特征生成n元语法特征。

TextSpecialFeatureGenerator

TextSpecialFeatureGenerator 从传入的原始文本特征生成特定于文本的特征。

AbstractFeatureGenerator

class autogluon.features.generators.AbstractFeatureGenerator(features_in: list = None, feature_metadata_in: FeatureMetadata = None, post_generators: list = None, pre_enforce_types=False, pre_drop_useless=False, post_drop_duplicates=False, reset_index=False, column_names_as_str=True, name_prefix: str = None, name_suffix: str = None, infer_features_in_args: dict = None, infer_features_in_args_strategy='overwrite', banned_feature_special_types: List[str] = None, log_prefix='', verbosity=2)[source]

所有AutoGluon特征生成器继承的抽象特征生成器实现。 特征生成器的目的是以有状态的方式将数据从一种形式转换为另一种形式。 首先,生成器使用各种参数进行初始化,这些参数决定了特征的生成方式。 然后,生成器通过.fit().fit_transform()方法使用通常为pandas DataFrame格式的训练数据进行拟合。 最后,生成器可以通过.transform()方法转换与训练数据具有相同初始格式的新数据。

Parameters:
  • features_in (list, default None) – 生成器在拟合和转换方法中期望并使用的特征名称列表。 传入的DataFrame中不在features_in中的任何特征将被丢弃,并且不会影响转换逻辑。 如果为None,则在拟合期间从_infer_features_in方法推断。 相当于拟合后的feature_metadata_in.get_features()。

  • feature_metadata_in (autogluon.common.features.feature_metadata.FeatureMetadata, 默认 None) – 对应于训练数据输入特征的 FeatureMetadata 对象。 如果为 None,则在 fit 期间通过 _infer_feature_metadata_in 方法推断。 如果提供了 features_in,则不在 features_in 中的任何特征将从 feature_metadata_in 中移除。

  • post_generators (list of FeatureGenerators, default None) – 在此对象的转换逻辑之后,将依次拟合和转换的FeatureGenerators列表, 将它们的输出作为下一个生成器的输入。 最终的FeatureGenerator的输出将用作转换后的输出。

  • pre_enforce_types (bool, default False) – 如果为True,训练数据的原始类型(int64, float32等)将在未来的数据上强制执行, 要么将类型转换为训练类型,要么在无法转换时引发异常。 在特征生成管道的外部特征生成器上将其设置为True非常重要,以确保不会将错误的dtypes传递到下游,但在管道内部的特征生成器上使用时通常是多余的。

  • pre_drop_useless (bool, 默认 False) – 如果为 True,features_in 将在拟合时被修剪,去除所有行中仅包含单一唯一值的特征。

  • post_drop_duplicates (bool, default False) – 如果为True,将会在post_generators中附加一个DropDuplicatesFeatureGenerator。 此特征生成器将删除数据中发现的任何重复特征,仅保留任何重复特征集中的一个特征。 警告:对于具有许多特征的大型数据集,这可能会非常耗费计算资源,甚至可能无法计算。

  • reset_index (bool, 默认 False) – 如果为 True,在 fit 和 transform 期间,输入数据的索引将被重置为从 0 到 N-1 单调递增,其中 N 是数据集的行数。 在 fit 和 transform 结束时,原始索引将重新应用于输出数据。 在特征生成管道中的外部特征生成器上将其设置为 True 非常重要,以确保如果任何内部特征生成器未正确处理非默认索引,非默认索引不会导致内部特征生成的损坏。 如果在 fit 期间提供了 y 标签数据,此索引重置也将应用于 y 标签数据。

  • column_names_as_str (bool, 默认 True) – 如果为 True,输入数据的列名如果不是字符串,则会被转换为字符串。 这解决了与下游 FeatureGenerators 和模型无法处理整数列名相关的问题,并允许列名前缀和后缀操作避免错误。 请注意,出于性能考虑,列名仅在转换时(如果在拟合时不是字符串)才会被转换。 确保输入列名一致以避免错误。

  • name_prefix (str, default None) – 要添加到所有输出特征名称的名称前缀。

  • name_suffix (str, default None) – 要添加到所有输出特征名称的名称后缀。

  • infer_features_in_args (dict, 默认 None) – 当推断 self.features_in 时,用作 FeatureMetadata.get_features(**kwargs) 的 kwargs 输入。 这取决于 infer_features_in_args_strategy 的值,与 self.get_default_infer_features_in_args() 的输出字典合并。 仅在 features_in 为 None 时使用。 如果为 None,则直接使用 self.get_default_infer_features_in_args()。 有关有效键的完整描述,请参阅 FeatureMetadata.get_features 文档。 注意:这是高级功能,大多数情况下不需要使用。

  • infer_features_in_args_strategy (str, default 'overwrite') – 确定如何将 infer_features_in_args 和 self.get_default_infer_features_in_args() 结合以生成 self._infer_features_in_args,该参数决定了 features_in 的推断逻辑。 如果为 ‘overwrite’:则仅使用 infer_features_in_args,忽略 self.get_default_infer_features_in_args()。 如果为 ‘update’:则 self.get_default_infer_features_in_args() 会被 infer_features_in_args 字典更新。 如果 infer_features_in_args 为 None,则忽略此操作。

  • banned_feature_special_types (List[str], default None) – 要额外排除的特征特殊类型列表。将更新 self.get_default_infer_features_in_args()。

  • log_prefix (str, default '') – 生成器生成的所有日志语句前添加的前缀字符串。

  • verbosity (int, default 2) – 控制日志的详细程度。 0 将静默日志,1 仅记录警告,2 将记录信息级别的信息,3 将记录信息级别的信息并提供详细的 特征类型输入和输出信息。 日志记录仍由全局日志记录配置控制,因此详细程度为 3 并不保证日志会被输出。

features_in

生成器在拟合和转换方法中期望并使用的特征名称列表。 等同于拟合后的feature_metadata_in.get_features()。

Type:

字符串列表

features_out

fit_transform 和 transform 方法输出中存在的特征名称列表。 等同于拟合后的 feature_metadata.get_features()。

Type:

字符串列表

feature_metadata_in

数据预转换的FeatureMetadata(用作fit和transform方法输入的数据)。

Type:

FeatureMetadata

feature_metadata

数据转换后的FeatureMetadata(由fit_transform和transform方法输出的数据)。

Type:

FeatureMetadata

feature_metadata_real

数据转换后的FeatureMetadata,包含确切的dtypes,与feature_metadata_in中找到的分组原始dtypes相对,其中分组原始dtypes替代了特殊dtypes。 这仅在print_feature_metadata_info方法中使用,旨在进行内省。可以安全地将其设置为None以减少拟合后的内存和磁盘使用。

type:

FeatureMetadata

方法

fit(X: DataFrame, **kwargs)[source]

将生成器适配到提供的数据。 由于生成器跟踪输出特征和类型的方式,通常需要在适配期间对数据进行转换,因此除了简单地调用fit_transform之外,实现适配函数很少有用。

Parameters:
  • X (DataFrame) – 用于拟合生成器的输入数据。

  • **kwargs – 特定生成器实现可能使用的任何额外参数。 有关常见的kwargs值,请参见fit_transform方法。

fit_transform(X: DataFrame, y: Series = None, feature_metadata_in: FeatureMetadata = None, **kwargs) DataFrame[source]

将生成器适配到提供的数据,并返回数据的转换版本,就像使用相同数据依次调用fit和transform一样。 这通常比分别调用fit和transform更高效,如果适配过程需要数据转换,速度可以快两倍。 在生成器已经适配后不能调用此方法,否则会导致AssertionError。

Parameters:
  • X (DataFrame) – 用于拟合生成器的输入数据。

  • y (Series, 可选) – 用于拟合生成器的输入数据的标签。大多数生成器不使用标签。 y.index 必须等于 X.index 以避免不对齐。

  • feature_metadata_in (FeatureMetadata, optional) – 与在生成器初始化期间提供feature_metadata_in相同。如果已经指定了self.feature_metadata_in,则忽略此参数。 如果两者都未设置,feature_metadata_in将从_infer_feature_metadata_in方法中推断出来。

  • **kwargs – 特定生成器实现可能使用的任何额外参数。传递给 _fit_transform 和 _fit_generators 方法。

Returns:

X_out

Return type:

DataFrame对象,它是输入数据X的转换版本。

返回包括所有前后生成器的特征链接。

获取此生成器与其所有后续生成器之间的特征依赖链。

get_tags() dict[source]

获取此生成器的标签。

is_valid_metadata_in(feature_metadata_in: FeatureMetadata)[source]
True if input data with feature metadata of feature_metadata_in could result in non-empty output.

这是由feature_metadata_in.get_features(**self._infer_features_in_args)不为空决定的。

False if the features represented in feature_metadata_in do not contain any usable types for the generator.

例如,如果仅将数值特征作为输入传递给需要文本输入特征的TextSpecialFeatureGenerator,这将返回False。 然而,如果同时传递了数值和文本特征,这将返回True,因为文本特征将是有效的输入(数值特征将被简单地丢弃)。

print_feature_metadata_info(log_level: int = 20)[source]

输出一个拟合特征生成器的详细日志,包括输入和输出的FeatureMetadata对象的特征类型。

Parameters:

log_level (int, default 20) – 日志语句的日志级别。

print_generator_info(log_level: int = 20)[source]

输出生成器的详细日志,例如拟合运行时间。

Parameters:

log_level (int, default 20) – 日志语句的日志级别。

transform(X: DataFrame) DataFrame[source]

将输入数据转换为输出数据格式。 如果在生成器使用fit或fit_transform方法进行拟合之前调用,将引发AssertionError。

Parameters:

X (DataFrame) – 输入数据,将由生成器进行转换。 输入数据必须包含features_in中的所有特征,并且应具有与提供给fit的数据相同的dtypes。 X中存在的但不在features_in中的额外列将被忽略,不会影响输出。

Returns:

X_out

Return type:

DataFrame对象,它是输入数据X的转换版本。

AutoMLPipelineFeatureGenerator

class autogluon.features.generators.AutoMLPipelineFeatureGenerator(enable_numeric_features=True, enable_categorical_features=True, enable_datetime_features=True, enable_text_special_features=True, enable_text_ngram_features=True, enable_raw_text_features=False, enable_vision_features=True, vectorizer=None, text_ngram_params=None, **kwargs)[source]

具有简化参数的管道特征生成器,能够充分处理包括文本和日期在内的大多数表格数据。 这是AutoGluon在未指定时使用的默认特征生成管道。 有关更多自定义选项,请参阅PipelineFeatureGeneratorBulkFeatureGenerator

Parameters:
  • enable_numeric_features (bool, default True) – 是否保留‘int’和‘float’原始类型的特征。 这些特征会原封不动地传递给模型。 将IdentityFeatureGenerator(infer_features_in_args=dict(valid_raw_types=[‘int’, ‘float’])))添加到生成器组中。

  • enable_categorical_features (bool, default True) – 是否保留‘object’和‘category’原始类型的特征。 这些特征会被处理成内存优化的‘category’特征。 将CategoryFeatureGenerator()添加到生成器组中。

  • enable_datetime_features (bool, default True) – 是否保留‘datetime’原始类型的特征以及被识别为‘datetime_as_object’特征的‘object’特征。 这些特征将被转换为表示自纪元以来的毫秒数的‘int’特征。 将DatetimeFeatureGenerator()附加到生成器组中。

  • enable_text_special_features (bool, default True) – 是否使用被识别为‘文本’特征的‘对象’特征来生成‘文本特殊’特征,例如单词计数、大写字母比例和符号计数。 将TextSpecialFeatureGenerator()附加到生成器组中。

  • enable_text_ngram_features (bool, default True) – 是否使用被识别为‘text’特征的‘object’特征来生成‘text_ngram’特征。 将TextNgramFeatureGenerator(vectorizer=vectorizer, text_ngram_params)附加到生成器组中。有关有效参数,请参见text_ngram.py。

  • enable_raw_text_features (bool, default False) – 是否使用原始文本特征。生成的原始文本特征将以‘_raw_text’后缀结尾。 例如,‘sentence’ –> ‘sentence_raw_text’

  • enable_vision_features (bool, default True) – [实验性] 是否保留被识别为‘image_path’特殊类型的‘object’特征。 这种形式的特征应该有一个指向图像文件的字符串路径作为其值。 只有视觉模型可以利用这些特征,并且这些特征不会被当作分类特征处理。 注意:‘image_path’特征不会自动推断。这些特征必须在自定义的FeatureMetadata对象中明确指定。 注意:建议字符串路径使用绝对路径而不是相对路径,因为这样可能更稳定。

  • vectorizer (sklearn.feature_extraction.text.CountVectorizer, 默认 CountVectorizer(min_df=30, ngram_range=(1, 3), max_features=10000, dtype=np.uint8) # noqa) – 用于 TextNgramFeatureGenerator 的 sklearn CountVectorizer 对象。 仅在 enable_text_ngram_features=True 时使用。

  • **kwargs – 有关有效关键字参数的详细信息,请参阅AbstractFeatureGenerator文档。

示例

>>> from autogluon.tabular import TabularDataset
>>> from autogluon.features.generators import AutoMLPipelineFeatureGenerator
>>>
>>> feature_generator = AutoMLPipelineFeatureGenerator()
>>>
>>> label = 'class'
>>> train_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv')
>>> X_train = train_data.drop(labels=[label], axis=1)
>>> y_train = train_data[label]
>>>
>>> X_train_transformed = feature_generator.fit_transform(X=X_train, y=y_train)
>>>
>>> test_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv')
>>>
>>> X_test_transformed = feature_generator.transform(test_data)

PipelineFeatureGenerator

class autogluon.features.generators.PipelineFeatureGenerator(pre_generators=None, post_generators=None, pre_drop_useless=True, pre_enforce_types=True, reset_index=True, post_drop_duplicates=True, verbosity=3, **kwargs)[source]

PipelineFeatureGenerator 是 BulkFeatureGenerator 的一个实现,具有各种智能默认值和边缘情况处理功能,以实现稳健的数据处理。 建议用户在从 PipelineFeatureGenerator 进行端到端数据转换时,基于任何自定义特征生成器。

参考 AutoMLPipelineFeatureGenerator 以获取扩展 PipelineFeatureGenerator 的示例。

不建议将PipelineFeatureGenerator用作任何其他生成器的前置或后置生成器中的生成器。

批量特征生成器

class autogluon.features.generators.BulkFeatureGenerator(generators: List[List[AbstractFeatureGenerator]], pre_generators: List[AbstractFeatureGenerator] = None, **kwargs)[source]

BulkFeatureGenerator 用于复杂的特征生成管道,其中需要多个生成器,某些生成器需要其他生成器的输出作为输入(多阶段生成)。 对于机器学习问题,用户应使用作为 BulkFeatureGenerator 实例或继承自 BulkFeatureGenerator 的特征生成器,因为单一特征生成器通常无法满足所有输入数据类型的特征生成需求。 除非您是专家用户,否则我们建议您基于 PipelineFeatureGenerator 创建自定义的 FeatureGenerators,而不是基于 BulkFeatureGenerator。

Parameters:
  • generators (List[List[AbstractFeatureGenerator]]) –

    generators 是一个生成器组的列表,其中生成器组是一个生成器的列表。 generators[i](生成器组)中的特征生成器都在相同的数据上进行拟合, 然后它们的输出被连接起来形成 generators[i] 的输出。 generators[i+1] 然后在 generators[i] 的输出上进行拟合。 最后一个生成器组的输出是 _fit_transform 和 _transform 方法的输出。 由于生成器的灵活性,在初始化时,如果 pre_generators 和 post_generators 不为 None, 生成器将在前面添加 pre_generators 并在后面添加 post_generators。

    如果指定了 pre/post 生成器,提供的生成器将像这样扩展:

    pre_generators = [[pre_generator] for pre_generator in pre_generators] post_generators = [[post_generator] for post_generator in self._post_generators] self.generators: List[List[AbstractFeatureGenerator]] = pre_generators + generators + post_generators self._post_generators = []

    这意味着 self._post_generators 将为空,因为 post_generators 将被合并到 self.generators 中。

    请注意,如果生成器组中的生成器生成具有相同名称的特征,将会引发 AssertionError, 因为在有效的 DataFrame 输出中不能存在具有相同名称的特征。

    如果需要这两个特征,请在其中一个生成器中指定 name_prefix 参数以防止名称冲突。 如果尝试不同的生成器组,建议在没有任何 ML 模型训练的情况下尝试将实验性特征生成器拟合到数据上, 以确保有效性并避免名称冲突。

  • pre_generators (List[AbstractFeatureGenerator], optional) – pre_generators 是在 generators 之前依次拟合的生成器。 功能与 post_generators 参数相同,但 pre_generators 在 generators 之前调用,而 post_generators 在 generators 之后调用。 为继承自 BulkFeatureGenerator 的类提供便利。 常见的 pre_generator 包括 AsTypeFeatureGeneratorFillNaFeatureGenerator,它们的作用是修剪和清理数据,而不是生成全新的特征。

  • **kwargs – Refer to AbstractFeatureGenerator documentation for details on valid key word arguments.

示例

>>> from autogluon.tabular import TabularDataset
>>> from autogluon.features.generators import AsTypeFeatureGenerator, BulkFeatureGenerator, CategoryFeatureGenerator, DropDuplicatesFeatureGenerator, FillNaFeatureGenerator, IdentityFeatureGenerator  # noqa
>>> from autogluon.common.features.types import R_INT, R_FLOAT
>>>
>>> generators = [
>>>     [AsTypeFeatureGenerator()],  # Convert all input features to the exact same types as they were during fit.
>>>     [FillNaFeatureGenerator()],  # Fill all NA values in the data
>>>     [
>>>         CategoryFeatureGenerator(),  # Convert object types to category types and minimize their memory usage
>>>         # Carry over all features that are not objects and categories (without this, the int features would be dropped).
>>>         IdentityFeatureGenerator(infer_features_in_args=dict(valid_raw_types=[R_INT, R_FLOAT])),
>>>     ],
>>>     # CategoryFeatureGenerator and IdentityFeatureGenerator will have their outputs concatenated together
>>>     # before being fed into DropDuplicatesFeatureGenerator
>>>     [DropDuplicatesFeatureGenerator()]  # Drops any features which are duplicates of each-other
>>> ]
>>> feature_generator = BulkFeatureGenerator(generators=generators, verbosity=3)
>>>
>>> label = 'class'
>>> train_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv')
>>> X_train = train_data.drop(labels=[label], axis=1)
>>> y_train = train_data[label]
>>>
>>> X_train_transformed = feature_generator.fit_transform(X=X_train, y=y_train)
>>>
>>> test_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv')
>>>
>>> X_test_transformed = feature_generator.transform(test_data)

AsTypeFeatureGenerator

class autogluon.features.generators.AsTypeFeatureGenerator(convert_bool: bool = True, convert_bool_method: str = 'auto', convert_bool_method_v2_threshold: int = 15, convert_bool_method_v2_row_threshold: int = 128, **kwargs)[source]

对数据进行类型转换以匹配拟合期间看到的类型。 如果无法将特征转换为正确的类型,将引发异常。

Parameters:
  • convert_bool (bool, default True) – 是否自动将只有两个唯一值的特征转换为布尔值。

  • convert_bool_method (str, default "auto") – [高级] 用于转换布尔特征的处理方法。建议保持为“auto”。 如果为“auto”:将尝试根据数据自动选择最佳方法。 如果为“v1”:将使用在v0.7之前默认的简单方法(_convert_to_bool_simple) 如果为“v2”:将使用在v0.7中引入的优化方法(_convert_to_bool_fast) 请注意,“v2”并不总是比“v1”快,并且在布尔列较少时通常较慢。 所有选项产生的结果相同,除了在极端的合成边缘情况下。

  • convert_bool_method_v2_threshold (int, default 15) – [高级] 如果 convert_bool_method=”auto”,此值决定使用哪种方法。 如果布尔特征的数量 >= 此值,则使用“v2”。否则,使用“v1”。 15 大致是平均最优值。

  • convert_bool_method_v2_row_threshold (int, default 128) – [高级] 如果使用“v2”布尔方法,这是行数的阈值,当行数 >= 该值时,将使用批处理方法而不是实时方法。 128 大致是平均情况下的最佳值。

  • **kwargs – Refer to AbstractFeatureGenerator documentation for details on valid key word arguments.

BinnedFeatureGenerator

class autogluon.features.generators.BinnedFeatureGenerator(num_bins=10, **kwargs)[source]

BinnedFeatureGenerator 将输入的整数和浮点数特征分箱为 num_bins 个唯一的整数值,保持相对排序顺序。

类别特征生成器

class autogluon.features.generators.CategoryFeatureGenerator(stateful_categories=True, minimize_memory=True, cat_order='original', minimum_cat_count: int = 2, maximum_num_cat: int = None, fillna: str = None, **kwargs)[source]

CategoryFeatureGenerator 用于将对象类型转换为类别类型,以及移除稀有类别并优化内存使用。 在拟合之后,转换期间以前未见过的类别被视为缺失值。

Parameters:
  • stateful_categories (bool, 默认 True) – 如果为True,训练中的类别将应用于转换后的数据,输入数据中的任何未知类别将被视为缺失值。 建议将此值保持为True,以避免下游行为异常。

  • minimize_memory (bool, 默认值 True) – 如果为True,通过将所有类别值转换为顺序整数来最小化类别内存使用。 这将替换类别中存在的任何字符串数据,但只要下游不需要原始字符串值,使用类别作为特征时不会改变模型的行为。 建议将此值保持为True,以显著减少内存使用,而不会影响准确性。

  • cat_order (str, default 'original') –

    确定类别存储的顺序。 当minimize_memory为True时,这一点很重要,因为顺序将决定哪些类别被转换为哪些整数值。 有效值:

    ’original’ : 保持原始顺序。如果特征最初是一个对象,这相当于‘alphanumeric’。 ‘alphanumeric’ : 按字母数字顺序排序类别。 ‘count’ : 按频率排序类别(最不频繁的在前,代码为0)

  • minimum_cat_count (int, default None) – 类别在训练数据中必须出现的最小次数,以避免被视为稀有类别。 稀有类别将被移除并视为缺失值。 如果为None,则不需要最小计数。这包括在数据中从未出现但在类别对象中作为可能类别存在的类别。

  • maximum_num_cat (int, 默认 None) – 可以被视为非稀有类别的最大数量。 按出现次数排序,如果 maximum_num_cat=N,将保留出现次数最高的 N 个类别。所有其他类别将被视为稀有类别。

  • fillna (str, default None) –

    用于处理缺失值的方法。仅在stateful_categories=True时有效。 缺失值包括原本为NaN的值以及从其他参数(如minimum_cat_count)转换为NaN的值。 有效值:

    None : 保持缺失值不变。它们将显示为NaN,并且没有分配类别。 ‘mode’ : 将缺失值设置为其特征中最频繁的类别。

  • **kwargs – Refer to AbstractFeatureGenerator documentation for details on valid key word arguments.

日期时间特征生成器

class autogluon.features.generators.DatetimeFeatureGenerator(features: list = ['year', 'month', 'day', 'dayofweek'], **kwargs)[source]

将日期时间特征转换为数值特征。

Parameters:

features (list, optional) – 一个日期时间特征的列表,用于从日期中解析出来。 有关完整选项列表,请参阅 https://pandas.pydata.org/docs/reference/api/pandas.Series.html 中的 pandas.Series.dt 方法。

DropDuplicatesFeatureGenerator

class autogluon.features.generators.DropDuplicatesFeatureGenerator(sample_size_init=500, sample_size_final=3000, **kwargs)[source]

删除与其他特征完全重复的特征,只保留数据的一个实例。

Parameters:
  • sample_size_init (int, default 500) – 在对重复特征候选进行初始过滤时采样的行数。 通常,使用这个较小的行数可以过滤掉大部分特征,从而大大加快最终检查的计算速度。 如果为None或大于行数,则不会进行初始过滤。这可能会极大地增加大型数据集的拟合时间。

  • sample_size_final (int, default 3000) – 在进行最终过滤以确定重复特征时要采样的行数。 理论上,这可能导致非常接近但不完全相同的特征被移除, 但在实践中几乎不可能发生。 如果为None或大于行数,将执行精确的重复检测(最耗时)。 建议将此值保持在100000以下,以保持合理的拟合时间。

  • **kwargs – Refer to AbstractFeatureGenerator documentation for details on valid key word arguments.

DropUniqueFeatureGenerator

class autogluon.features.generators.DropUniqueFeatureGenerator(max_unique_ratio=0.99, **kwargs)[source]

删除那些只有一个唯一值或几乎没有重复值(基于max_unique_ratio)并且是类别或对象类型的特征。

DummyFeatureGenerator

class autogluon.features.generators.DummyFeatureGenerator(features_in='empty', feature_metadata_in='empty', **kwargs)[source]

忽略所有输入特征并返回一个全为0值的单一整数特征。 用于测试目的或在未提供特征时避免崩溃。

FillNaFeatureGenerator

class autogluon.features.generators.FillNaFeatureGenerator(fillna_map=None, fillna_default=nan, inplace=False, **kwargs)[source]

填补数据中的缺失值。

Parameters:
  • fillna_map (dict, 默认 {'object': ''}) – 决定NaN填充值的映射。 键是特征的原始类型,如self.feature_metadata_in.type_map_raw中所示。 如果特征的原始类型不在fillna_map中,则其NaN值将填充为fillna_default。

  • fillna_default – 如果特征的原始类型不在fillna_map中,则使用默认的fillna值。 请注意,不要将其设置为np.nan以外的任何值,因为并非所有原始类型都能处理int、float或string值。

  • np.nan (默认) – 如果特征的原始类型不在fillna_map中,则使用默认的fillna值。 请注意,不要将其设置为np.nan以外的任何值,因为并非所有原始类型都能处理int、float或string值。

  • inplace (bool, 默认 False) – 如果为True,则NaN值将在不复制输入数据的情况下就地填充。 这将在此函数范围之外改变输入数据。

  • **kwargs – Refer to AbstractFeatureGenerator documentation for details on valid key word arguments.

IdentityFeatureGenerator

class autogluon.features.generators.IdentityFeatureGenerator(features_in: list = None, feature_metadata_in: FeatureMetadata = None, post_generators: list = None, pre_enforce_types=False, pre_drop_useless=False, post_drop_duplicates=False, reset_index=False, column_names_as_str=True, name_prefix: str = None, name_suffix: str = None, infer_features_in_args: dict = None, infer_features_in_args_strategy='overwrite', banned_feature_special_types: List[str] = None, log_prefix='', verbosity=2)[source]

IdentityFeatureGenerator 只是简单地传递数据而不进行任何更改。

LabelEncoderFeatureGenerator

class autogluon.features.generators.LabelEncoderFeatureGenerator(features_in: list = None, feature_metadata_in: FeatureMetadata = None, post_generators: list = None, pre_enforce_types=False, pre_drop_useless=False, post_drop_duplicates=False, reset_index=False, column_names_as_str=True, name_prefix: str = None, name_suffix: str = None, infer_features_in_args: dict = None, infer_features_in_args_strategy='overwrite', banned_feature_special_types: List[str] = None, log_prefix='', verbosity=2)[source]

通过映射到类别代码,将类别特征转换为整数特征。

CategoryMemoryMinimizeFeatureGenerator

class autogluon.features.generators.CategoryMemoryMinimizeFeatureGenerator(features_in: list = None, feature_metadata_in: FeatureMetadata = None, post_generators: list = None, pre_enforce_types=False, pre_drop_useless=False, post_drop_duplicates=False, reset_index=False, column_names_as_str=True, name_prefix: str = None, name_suffix: str = None, infer_features_in_args: dict = None, infer_features_in_args_strategy='overwrite', banned_feature_special_types: List[str] = None, log_prefix='', verbosity=2)[source]

通过将类别值转换为单调递增的整数值来最小化类别特征的内存使用。 这对于具有字符串值的类别特征非常重要,尽管字符串信息在下游未被使用,但它们可能会占用大量内存。

数值内存最小化特征生成器

class autogluon.features.generators.NumericMemoryMinimizeFeatureGenerator(dtype_out=<class 'numpy.uint8'>, **kwargs)[source]

裁剪并转换整数特征的dtype以最小化内存使用。

dtype_outnp.dtype, default np.uint8

用于裁剪和转换特征的dtype。 裁剪将自动使用所提供的dtype的正确最小值和最大值。

**kwargs :

有关有效关键字的详细信息,请参阅AbstractFeatureGenerator文档。

重命名特征生成器

class autogluon.features.generators.RenameFeatureGenerator(name_prefix=None, name_suffix=None, inplace=False, **kwargs)[source]

RenameFeatureGenerator 重命名列而不改变它们的值。 这可以用于在多种方式转换相同特征时避免列名冲突, 或者强调某个特征是从特定管道派生的。

Parameters:
  • name_prefix (str, default None) – Name prefix to add to all output feature names.

  • name_suffix (str, default None) – Name suffix to add to all output feature names.

  • inplace (bool, 默认 False) – 如果为True,则在不复制输入数据的情况下原地重命名列名。 这将在此函数范围之外改变输入数据。

  • **kwargs – Refer to AbstractFeatureGenerator documentation for details on valid key word arguments.

TextNgramFeatureGenerator

class autogluon.features.generators.TextNgramFeatureGenerator(vectorizer=None, vectorizer_strategy='combined', max_memory_ratio=0.15, prefilter_tokens=False, prefilter_token_count=100, **kwargs)[source]

从文本特征生成n元语法特征。

Parameters:
  • vectorizer (sklearn.feature_extraction.text.CountVectorizersklearn.feature_extraction.text.TfidfVectorizer, 默认 CountVectorizer(min_df=30, ngram_range=(1, 3), max_features=10000, dtype=np.uint8) # noqa) – 用于根据文本数据生成 ngrams 的 sklearn CountVectorizer。 也可以指定 TfidfVectorizer,但请注意,相对于 CountVectorizer,内存使用量将增加 4-8 倍。

  • vectorizer_strategy (str, default 'combined') – 如果选择‘combined’,所有文本特征将被连接在一起以适应向量化器。 以这种方式生成的特征名称前会加上‘__nlp__.’。 如果选择‘separate’,所有文本特征将分别适应它们自己的向量化器副本。 然后它们的ngram特征将被连接在一起形成输出。 如果选择‘both’,‘combined’和‘separate’的输出将被连接在一起形成输出。 通常建议将vectorizer_strategy保持为‘combined’,除非文本特征彼此不相关, 因为拟合单独的向量化器可能会增加内存使用和模型训练时间。 有效值:[‘combined’, ‘separate’, ‘both’]

  • max_memory_ratio (float, default 0.15) – 安全措施,以避免在模型训练中出现内存不足的错误。 生成的ngrams数量将被限制为最多占用总可用内存的max_memory_ratio比例, 将ngrams视为float32值。 ngram特征将按从最不频繁到最频繁的顺序移除。 注意:对于除‘combined’之外的vectorizer_strategy值,生成的ngrams可能会使用超过此值的内存。 建议仅在确信较高值不会导致内存不足错误时,将此值增加到0.15以上。

  • **kwargs – Refer to AbstractFeatureGenerator documentation for details on valid key word arguments.

文本特殊特征生成器

class autogluon.features.generators.TextSpecialFeatureGenerator(symbols: List[str] = None, min_occur_ratio=0.01, min_occur_offset=10, bin_features: bool = True, post_drop_duplicates: bool = True, **kwargs)[source]

TextSpecialFeatureGenerator 从传入的原始文本特征生成特定于文本的特征。 这些特征包括单词计数、字符计数、符号计数、大写字母比例等。 此生成器生成的特征将具有“text_special”作为特殊类型。

Parameters:
  • symbols (List[str], optional) – 用于计算计数和比率作为特征的字符串符号列表。 如果未指定,默认为 [‘!’, ‘?’, ‘@’, ‘%’, ‘$’, ‘*’, ‘&’, ‘#’, ‘^’, ‘.’, ‘:’, ‘ ‘, ‘/’, ‘;’, ‘-’, ‘=’]

  • min_occur_ratio (float, default 0.01) – 符号出现的最小比率,以考虑作为特征。 如果一个符号在少于1/1/min_occur_ratio的样本中出现,它将不会被用作特征。

  • min_occur_offset (int, default 10) – 被视为特征的最小符号出现次数。这是添加到从min_occur_ratio计算的阈值中的。

  • bin_features (bool, 默认 True) – 如果为True,则在post_generators的前面添加一个BinnedFeatureGenerator,以便从此生成器生成的所有特征都被分箱。 这对于‘text_special’特征非常有用,因为它降低了模型在这些特征上过拟合的可能性,并减少了它们的内存使用。

  • post_drop_duplicates (bool, 默认 True) – 与 AbstractFeatureGenerator 的 post_drop_duplicates 相同,只是默认值为 True 而不是 False。 这有助于在数据中不存在符号时清理此生成器的输出。

  • **kwargs – 有关有效关键字参数的详细信息,请参阅AbstractFeatureGenerator文档。