Pipeline#

class sklearn.pipeline.Pipeline(steps, *, memory=None, verbose=False)#

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

Pipeline 允许你按顺序将一系列转换器应用于预处理数据,并且如果需要,以最终的 预测器 结束序列进行预测建模。

管道的中间步骤必须是 ‘转换’,即它们必须实现 fittransform 方法。 最终的 估计器 只需要实现 fit 。可以使用 memory 参数缓存管道中的转换器。

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

有关 PipelineGridSearchCV 结合使用的示例用例,请参阅 使用Pipeline和GridSearchCV选择降维方法 。示例 流水线:将PCA和逻辑回归连接起来 展示了如何在管道中使用 '__' 作为参数名称的分隔符进行网格搜索。

更多信息请参阅 用户指南

Added in version 0.5.

Parameters:
stepslist of tuples

要按顺序链接的 (步骤名称, 估计器) 元组列表。为了与 scikit-learn API 兼容,所有步骤必须定义 fit 。所有非最后步骤还必须定义 transform 。有关更多详细信息,请参阅 Combining Estimators

memorystr or object with the joblib.Memory interface, default=None

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

verbosebool, default=False

如果为 True,则在完成每个步骤的拟合时将打印所用的时间。

Attributes:
named_stepsBunch

访问步骤按名称。

classes_ndarray of shape (n_classes,)

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

n_features_in_int

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

feature_names_in_ndarray of shape ( n_features_in_ ,)

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

See also

make_pipeline

用于简化管道构建的便捷函数。

Examples

>>> 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 sklearn.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())])
>>> # 管道可以像任何其他估计器一样使用
>>> # 并避免将测试集泄漏到训练集中
>>> pipe.fit(X_train, y_train).score(X_test, y_test)
0.88
>>> # 可以使用 '__' 语法设置估计器的参数
>>> 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 时有效。

Parameters:
Xiterable

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

**paramsdict of string -> object

步骤请求并接受的参数。每个步骤必须请求某些元数据,这些参数才能转发给它们。

Added in version 1.4: 仅在 enable_metadata_routing=True 时可用。有关更多详细信息,请参阅 Metadata Routing User Guide

Returns:
y_scorendarray of shape (n_samples, n_classes)

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

property feature_names_in_#

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

fit(X, y=None, **params)#

拟合模型。

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

Parameters:
X可迭代对象

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

y可迭代对象, 默认=None

训练目标。必须满足管道所有步骤的标签要求。

**paramsdict of str -> object
  • 如果 enable_metadata_routing=False (默认):

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

  • 如果 enable_metadata_routing=True

    步骤请求和接受的参数。每个步骤必须请求某些元数据,这些参数才会被转发到它们。

Changed in version 1.4: 如果请求并且通过 set_config 设置了 enable_metadata_routing=True ,参数现在也会传递给中间步骤的 transform 方法。

有关更多详细信息,请参阅 Metadata Routing 用户指南

Returns:
selfobject

带有已拟合步骤的管道。

fit_predict(X, y=None, **params)#

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

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

Parameters:
X可迭代对象

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

y可迭代对象, default=None

训练目标。必须满足管道所有步骤的标签要求。

**paramsdict of str -> object
  • 如果 enable_metadata_routing=False (默认):

    传递给管道中所有转换结束后调用的 predict 的参数。

  • 如果 enable_metadata_routing=True

    由步骤请求和接受的参数。每个步骤必须请求某些元数据,这些参数才会被转发到它们。

Added in version 0.20.

Changed in version 1.4: 如果请求并且 enable_metadata_routing=True ,参数现在也会传递给中间步骤的 transform 方法。

有关更多详细信息,请参阅 Metadata Routing User Guide

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

Returns:
y_predndarray

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

fit_transform(X, y=None, **params)#

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

依次拟合所有转换器并顺序转换数据。仅在最终估计器实现 fit_transformfittransform 时有效。

Parameters:
Xiterable

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

yiterable, default=None

训练目标。必须满足管道所有步骤的标签要求。

**paramsdict of str -> object
  • 如果 enable_metadata_routing=False (默认):

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

  • 如果 enable_metadata_routing=True

    步骤请求和接受的参数。每个步骤必须请求某些元数据,这些参数才会被转发到它们。

Changed in version 1.4: 如果请求并且 enable_metadata_routing=True ,参数现在也会传递给中间步骤的 transform 方法。

有关更多详细信息,请参阅 Metadata Routing User Guide

Returns:
Xtndarray of shape (n_samples, n_transformed_features)

转换后的样本。

get_feature_names_out(input_features=None)#

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

使用管道变换输入特征。

Parameters:
input_features字符串数组或None,默认=None

输入特征。

Returns:
feature_names_out字符串对象的ndarray

变换后的特征名称。

get_metadata_routing()#

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

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

Returns:
routingMetadataRouter

MetadataRouter 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

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

Parameters:
deepbool, default=True

如果为True,将返回此估计器和包含的作为估计器的子对象的参数。

Returns:
paramsmapping of string to any

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

inverse_transform(X=None, *, Xt=None, **params)#

应用 inverse_transform 以反向顺序对每个步骤进行操作。

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

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

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

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

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

Deprecated since version 1.5: Xt 在 1.5 版本中已弃用,并将在 1.7 版本中移除。请使用 X 代替。

**params字典,键为字符串,值为对象

步骤请求并接受的参数。每个步骤必须请求某些元数据, 这些参数才能转发给它们。

Added in version 1.4: 仅在 enable_metadata_routing=True 时可用。有关更多详细信息, 请参阅 Metadata Routing User Guide

Returns:
Xt形状为 (n_samples, n_features) 的 ndarray

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

property n_features_in_#

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

property named_steps#

访问步骤按名称。

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

predict(X, **params)#

转换数据,并在最终估计器上调用 predict

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

Parameters:
Xiterable

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

**paramsdict of str -> object
  • 如果 enable_metadata_routing=False (默认):

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

  • 如果 enable_metadata_routing=True

    由步骤请求和接受的参数。每个步骤必须请求某些元数据,这些参数才会被转发到它们。

Added in version 0.20.

Changed in version 1.4: 如果请求并且如果通过 set_config 设置了 enable_metadata_routing=True ,参数现在也会传递给中间步骤的 transform 方法。

有关更多详细信息,请参阅 Metadata Routing User Guide

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

Returns:
y_predndarray

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

predict_log_proba(X, **params)#

转换数据,并在最终估计器上调用 predict_log_proba

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

Parameters:
Xiterable

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

**paramsdict of str -> object
  • 如果 enable_metadata_routing=False (默认):

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

  • 如果 enable_metadata_routing=True

    由步骤请求和接受的参数。每个步骤必须请求某些元数据,这些参数才会被转发到它们。

Added in version 0.20.

Changed in version 1.4: 如果请求并且 enable_metadata_routing=True ,参数现在也会传递给中间步骤的 transform 方法。

有关更多详细信息,请参阅 Metadata Routing User Guide

Returns:
y_log_probandarray of shape (n_samples, n_classes)

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

predict_proba(X, **params)#

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

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

Parameters:
Xiterable

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

**paramsdict of str -> object
  • 如果 enable_metadata_routing=False (默认):

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

  • 如果 enable_metadata_routing=True

    由步骤请求和接受的参数。每个步骤必须请求某些元数据,这些参数才会被转发到它们。

Added in version 0.20.

Changed in version 1.4: 如果请求并且 enable_metadata_routing=True ,参数现在也会传递给中间步骤的 transform 方法。

有关更多详细信息,请参阅 Metadata Routing User Guide

Returns:
y_probandarray of shape (n_samples, n_classes)

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

score(X, y=None, sample_weight=None, **params)#

转换数据,并在最终估计器上调用 score

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

Parameters:
X可迭代对象

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

y可迭代对象, 默认=None

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

sample_weight类数组对象, 默认=None

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

**paramsdict of str -> object

步骤请求并接受的参数。每个步骤必须请求某些元数据,这些参数才能转发给它们。

Added in version 1.4: 仅在 enable_metadata_routing=True 时可用。有关更多详细信息,请参阅 Metadata Routing User Guide

Returns:
scorefloat

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

score_samples(X)#

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

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

Parameters:
X可迭代对象

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

Returns:
y_scorendarray 形状为 (n_samples,)

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

set_output(*, transform=None)#

设置在调用 "transform""fit_transform" 时的输出容器。

调用 set_output 将设置 steps 中所有估计器的输出。

Parameters:
transform{“default”, “pandas”, “polars”}, default=None

配置 transformfit_transform 的输出。

  • "default" : 转换器的默认输出格式

  • "pandas" : DataFrame 输出

  • "polars" : Polars 输出

  • None : 转换配置不变

Added in version 1.4: "polars" 选项已添加。

Returns:
selfestimator instance

估计器实例。

set_params(**kwargs)#

设置此估计器的参数。

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

Parameters:
**kwargsdict

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

Returns:
selfobject

Pipeline 类实例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') Pipeline#

Request metadata passed to the score method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to score if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to score .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in score .

Returns:
selfobject

The updated object.

transform(X, **params)#

转换数据,并应用最终估计器的 transform 方法。

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

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

Parameters:
Xiterable

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

**paramsdict of str -> object

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

Added in version 1.4: 仅在 enable_metadata_routing=True 时可用。有关更多详细信息,请参阅:ref:Metadata Routing User Guide <metadata_routing>

Returns:
Xtndarray of shape (n_samples, n_transformed_features)

转换后的数据。