管道#

class feature_engine.pipeline.Pipeline(steps, *, memory=None, verbose=False)[源代码][源代码]#

一系列数据转换器,带有一个可选的最终预测器。

Pipeline 允许你按顺序应用一系列转换器来预处理数据,并且如果需要,可以在序列的最后使用一个最终的 predictor 来进行预测建模。

管道的中间步骤必须是’转换器’,也就是说,它们必须实现 fittransform 方法。最终的 estimator 只需要实现 fit。管道中的转换器可以使用 memory 参数进行缓存。

此管道允许中间的转换器从数据集中移除行。它将自动调整目标变量以匹配剩余的观测值。

管道的目的是将几个步骤组合在一起,这些步骤可以在设置不同参数的同时进行交叉验证。为此,它允许使用步骤名称和参数名称之间用 '__' 分隔的方式来设置各个步骤的参数,如下例所示。一个步骤的估计器可以通过将其名称的参数设置为另一个估计器来完全替换,或者通过将其设置为 'passthrough'None 来移除一个转换器。

更多详情请参阅 用户指南

参数
步骤元组列表

一系列 (步骤名称, 估计器) 元组,这些元组将按顺序链接在一起。为了与 scikit-learn API 兼容,所有步骤都必须定义 fit。所有非最后一步还必须定义 transform。更多详情请参见 组合估计器

内存str 或具有 joblib.Memory 接口的对象,默认=None

用于缓存管道的拟合转换器。即使最后一步是转换器,也不会被缓存。默认情况下,不执行缓存。如果给定一个字符串,它是缓存目录的路径。启用缓存会在拟合之前触发转换器的克隆。因此,给定到管道的转换器实例不能直接检查。使用属性 named_stepssteps 来检查管道中的估计器。当拟合耗时较长时,缓存转换器是有优势的。

详细bool, 默认=False

如果为真,每个步骤拟合所花费的时间将在完成后打印出来。

属性
named_stepsBunch

按名称访问步骤。

classes_形状为 (n_classes,) 的 ndarray

类标签。

n_features_in_整数

fit 方法的第一步中看到的特征数量。

feature_names_in_ : 形状为 (n_features_in_,) 的 ndarray形状为的 ndarray

在第一步 fit 方法中看到的特征名称。

示例

>>> from sklearn.svm import SVC
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.datasets import make_classification
>>> from sklearn.model_selection import train_test_split
>>> from feature_engine.pipeline import Pipeline
>>> X, y = make_classification(random_state=0)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y,
...                                                     random_state=0)
>>> pipe = Pipeline([('scaler', StandardScaler()), ('svc', SVC())])
>>> # The pipeline can be used as any other estimator
>>> # and avoids leaking the test set into the train set
>>> pipe.fit(X_train, y_train).score(X_test, y_test)
0.88
>>> # An estimator's parameter can be set using '__' syntax
>>> pipe.set_params(svc__C=10).fit(X_train, y_train).score(X_test, y_test)
0.76
property classes_#

类标签。仅在最后一步是分类器时存在。

decision_function(X, **params)[源代码][源代码]#

转换数据,并使用最终估计器应用 decision_function

调用管道中每个转换器的 transform 方法。转换后的数据最终传递给调用 decision_function 方法的最终估计器。仅在最终估计器实现 decision_function 时有效。

参数
X可迭代对象

要预测的数据。必须满足管道第一步的输入要求。

**参数字符串 -> 对象 的字典

步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 1.4 版本加入: 仅在 enable_metadata_routing=True 时可用。更多详情请参阅 元数据路由用户指南

返回
y_score形状为 (n_samples, n_classes) 的 ndarray

对最终估计器调用 decision_function 的结果。

property feature_names_in_#

在第一步 fit 方法中看到的特征名称。

fit(X, y=None, **params)[源代码][源代码]#

拟合模型。

将所有转换器依次拟合并转换数据,然后使用最终估计器拟合转换后的数据。

参数
X可迭代对象

训练数据。必须满足管道第一步的输入要求。

y可迭代对象,默认=None

训练目标。必须满足流水线所有步骤的标签要求。

**参数str -> object 的字典
  • 如果 `enable_metadata_routing=False`(默认):

    传递给每个步骤的 fit 方法的参数,其中每个参数名称都带有前缀,使得步骤 s 的参数 p 的键为 s__p

  • 如果 enable_metadata_routing=True:

    步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 1.4 版本发生变更: 如果请求,并且通过 set_config() 设置了 enable_metadata_routing=True,参数现在也会传递给中间步骤的 transform 方法。

更多详情请参见 元数据路由用户指南

返回
self管道

这个估计器。

fit_predict(X, y=None, **params)[源代码][源代码]#

转换数据,并使用最终估计器应用 fit_predict

调用管道中每个转换器的 fit_transform 方法。转换后的数据最终传递给调用 fit_predict 方法的最终估计器。仅在最终估计器实现了 fit_predict 方法时有效。

参数
X可迭代对象

训练数据。必须满足管道第一步的输入要求。

y可迭代对象,默认=None

训练目标。必须满足流水线所有步骤的标签要求。

**参数str -> object 的字典
  • 如果 `enable_metadata_routing=False`(默认):

    在管道中所有转换结束时调用的 predict 的参数。

  • 如果 enable_metadata_routing=True:

    步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 0.20 版本加入.

在 1.4 版本发生变更: 如果请求并且 enable_metadata_routing=True,参数现在也会传递给中间步骤的 transform 方法。

更多详情请参见 元数据路由用户指南

请注意,虽然这可能用于从某些模型中返回不确定性,使用 return_stdreturn_cov,但管道中变换产生的不确定性不会传播到最终的估计器。

返回
y_predndarray

在最终估计器上调用 fit_predict 的结果。

fit_transform(X, y=None, **params)[源代码][源代码]#

拟合模型并通过最终的转换器进行转换。

将所有变压器一个接一个地依次拟合并转换数据。仅当管道的最后一步具有 transform 方法时有效。

参数
X可迭代对象

训练数据。必须满足管道第一步的输入要求。

y可迭代对象,默认=None

训练目标。必须满足流水线所有步骤的标签要求。

**参数str -> object 的字典
  • 如果 `enable_metadata_routing=False`(默认):

    传递给每个步骤的 fit 方法的参数,其中每个参数名称都带有前缀,使得步骤 s 的参数 p 的键为 s__p

  • 如果 enable_metadata_routing=True:

    步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 1.4 版本发生变更: 如果请求并且 enable_metadata_routing=True,参数现在也会传递给中间步骤的 transform 方法。

更多详情请参见 元数据路由用户指南

返回
Xt形状为 (n_samples, n_transformed_features) 的类数组

转换后的样本。

get_feature_names_out(input_features=None)[源代码][源代码]#

获取转换后的输出特征名称。

使用管道转换输入特征。

参数
input_features类数组的 str 或 None,默认=None

输入特征。

返回
feature_names_outstr对象的ndarray

转换后的特征名称。

get_metadata_routing()[源代码][源代码]#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

返回
路由MetadataRouter

一个封装了路由信息的 MetadataRouter

get_params(deep=True)[源代码][源代码]#

获取此估计器的参数。

返回构造函数中给出的参数以及 Pipelinesteps 中包含的估计器。

参数
深度bool, 默认=True

如果为 True,将返回此估计器及其包含的子对象(这些子对象也是估计器)的参数。

返回
参数字符串到任意类型的映射

参数名称映射到它们的值。

inverse_transform(X=None, *, Xt=None, **params)[源代码][源代码]#

以相反的顺序对每个步骤应用 inverse_transform

管道中的所有估计器都必须支持 inverse_transform

参数
X形状为 (n_samples, n_transformed_features) 的类数组

数据样本,其中 n_samples 是样本数量,n_features 是特征数量。必须满足管道 inverse_transform 方法最后一步的输入要求。

Xt形状为 (n_samples, n_transformed_features) 的类数组

数据样本,其中 n_samples 是样本数量,n_features 是特征数量。必须满足管道 inverse_transform 方法最后一步的输入要求。

自 1.5 版本弃用: Xt 在 1.5 版本中已被弃用,并将在 1.7 版本中移除。请改用 X

**参数str -> object 的字典

步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 1.4 版本加入: 仅在 enable_metadata_routing=True 时可用。更多详情请参阅 元数据路由用户指南

返回
Xt形状为 (n_samples, n_features) 的 ndarray

逆变换后的数据,即原始特征空间中的数据。

property n_features_in_#

fit 方法的第一步中看到的特征数量。

property named_steps#

按名称访问步骤。

只读属性,通过给定的名称访问任何步骤。键是步骤名称,值是步骤对象。

predict(X, **params)[源代码][源代码]#

转换数据,并使用最终估计器应用 predict

调用管道中每个转换器的 transform 方法。转换后的数据最终传递给调用 predict 方法的最终估计器。仅在最终估计器实现 predict 方法时有效。

参数
X可迭代对象

要预测的数据。必须满足管道第一步的输入要求。

**参数str -> object 的字典
  • 如果 `enable_metadata_routing=False`(默认):

    在管道中所有转换结束时调用的 predict 的参数。

  • 如果 enable_metadata_routing=True:

    步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 0.20 版本加入.

在 1.4 版本发生变更: 如果请求,并且通过 set_config() 设置了 enable_metadata_routing=True,参数现在也会传递给中间步骤的 transform 方法。

更多详情请参见 元数据路由用户指南

请注意,虽然这可能用于从某些模型中返回不确定性,使用 return_stdreturn_cov,但管道中变换产生的不确定性不会传播到最终的估计器。

返回
y_predndarray

在最终估计器上调用 predict 的结果。

predict_log_proba(X, **params)[源代码][源代码]#

转换数据,并使用最终估计器应用 predict_log_proba

调用管道中每个转换器的 transform 方法。转换后的数据最终传递给调用 predict_log_proba 方法的最终估计器。仅在最终估计器实现 predict_log_proba 时有效。

参数
X可迭代对象

要预测的数据。必须满足管道第一步的输入要求。

**参数str -> object 的字典
  • 如果 `enable_metadata_routing=False`(默认):

    在管道中所有转换结束时调用的 predict_log_proba 的参数。

  • 如果 enable_metadata_routing=True:

    步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 0.20 版本加入.

在 1.4 版本发生变更: 如果请求并且 enable_metadata_routing=True,参数现在也会传递给中间步骤的 transform 方法。

更多详情请参见 元数据路由用户指南

返回
y_log_proba形状为 (n_samples, n_classes) 的 ndarray

在最终估计器上调用 predict_log_proba 的结果。

predict_proba(X, **params)[源代码][源代码]#

转换数据,并使用最终估计器应用 predict_proba

调用管道中每个转换器的 transform 方法。转换后的数据最终传递给调用 predict_proba 方法的最终估计器。仅在最终估计器实现 predict_proba 时有效。

参数
X可迭代对象

要预测的数据。必须满足管道第一步的输入要求。

**参数str -> object 的字典
  • 如果 `enable_metadata_routing=False`(默认):

    在管道中所有转换结束时调用的 predict_proba 的参数。

  • 如果 enable_metadata_routing=True:

    步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 0.20 版本加入.

在 1.4 版本发生变更: 如果请求并且 enable_metadata_routing=True,参数现在也会传递给中间步骤的 transform 方法。

更多详情请参见 元数据路由用户指南

返回
y_proba形状为 (n_samples, n_classes) 的 ndarray

在最终估计器上调用 predict_proba 的结果。

score(X, y=None, sample_weight=None, **params)[源代码][源代码]#

转换数据,并使用最终估计器应用 score

调用管道中每个转换器的 transform 方法。转换后的数据最终传递给调用 score 方法的最终估计器。仅在最终估计器实现 score 时有效。

参数
X可迭代对象

要预测的数据。必须满足管道第一步的输入要求。

y可迭代对象,默认=None

用于评分的目标。必须满足管道所有步骤的标签要求。

sample_weight类似数组,默认=None

如果不是 None,这个参数将作为 sample_weight 关键字参数传递给最终估计器的 score 方法。

**参数str -> object 的字典

步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 1.4 版本加入: 仅在 enable_metadata_routing=True 时可用。更多详情请参阅 元数据路由用户指南

返回
分数浮动

在最终估计器上调用 score 的结果。

score_samples(X)[源代码][源代码]#

转换数据,并使用最终估计器应用 score_samples

调用管道中每个转换器的 transform 方法。转换后的数据最终传递给调用 score_samples 方法的最终估计器。仅在最终估计器实现 score_samples 时有效。

参数
X可迭代对象

要预测的数据。必须满足管道第一步的输入要求。

返回
y_score形状为 (n_samples,) 的 ndarray

在最终估计器上调用 score_samples 的结果。

set_params(**kwargs)[源代码][源代码]#

设置此估计器的参数。

有效的参数键可以通过 get_params() 列出。请注意,您可以直接设置 steps 中包含的估计器的参数。

参数
**kwargsdict

此估计器的参数或 steps 中包含的估计器的参数。可以通过步骤的名称和参数名称用 ‘__’ 分隔来设置步骤的参数。

返回
self对象

Pipeline 类实例。

set_score_request(*, sample_weight: Union[bool, None, str] = '$UNCHANGED$') Pipeline[源代码]#

传递给 score 方法的请求元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅 用户指南 了解路由机制的工作原理。

每个参数的选项是:

  • True: 请求元数据,并在提供时传递给 score。如果未提供元数据,则忽略请求。

  • False: 不请求元数据,元估计器不会将其传递给 score

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 元数据应使用此给定别名传递给元估计器,而不是原始名称。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

在 1.3 版本加入.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它没有效果。

参数
sample_weightstr, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED

scoresample_weight 参数的元数据路由。

返回
self对象

更新后的对象。

transform(X, **params)[源代码][源代码]#

转换数据,并使用最终估计器应用 transform

调用管道中每个转换器的 transform 方法。转换后的数据最终传递给调用 transform 方法的最终估计器。仅在最终估计器实现 transform 方法时有效。

这在最终估计器为 None 的情况下也适用,此时所有先前的转换都会被应用。

参数
X可迭代对象

要转换的数据。必须满足管道第一步的输入要求。

**参数str -> object 的字典

步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 1.4 版本加入: 仅在 enable_metadata_routing=True 时可用。更多详情请参阅 元数据路由用户指南

返回
Xt形状为 (n_samples, n_transformed_features) 的 ndarray

转换后的数据。

transform_x_y(X, y, **params)[源代码][源代码]#

拟合模型并通过最终估计器进行转换。

将所有转换器依次并顺序地应用于数据和目标进行转换。仅在最终估计器实现了 fit_transformfittransform 时有效。

参数
X可迭代对象

训练数据。必须满足管道第一步的输入要求。

y可迭代对象

训练目标。必须满足流水线所有步骤的标签要求。

**参数str -> object 的字典
  • 如果 `enable_metadata_routing=False`(默认):

    传递给每个步骤的 fit 方法的参数,其中每个参数名称都带有前缀,使得步骤 s 的参数 p 的键为 s__p

  • 如果 enable_metadata_routing=True:

    步骤请求和接受的参数。每个步骤必须请求某些元数据,以便将这些参数转发给它们。

在 1.4 版本发生变更: 如果请求并且 enable_metadata_routing=True,参数现在也会传递给中间步骤的 transform 方法。

更多详情请参见 元数据路由用户指南

返回
Xt形状为 (n_samples - n_rows, n_transformed_features) 的 ndarray

转换后的样本。

yt长度为 (n_samples - n_rows) 的 ndarray

转换后的目标。