Pipeline#

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

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

Pipeline 允许您按顺序应用一系列转换器来预处理数据,如果需要,还可以在序列末尾使用最终的 预测器 进行预测建模。

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

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

有关 PipelineGridSearchCV 结合使用的示例,请参阅 使用 Pipeline 和 GridSearchCV 选择降维方法。示例 管道化:链式 PCA 和逻辑回归 展示了如何使用 '__' 作为参数名称的分隔符对管道进行网格搜索。

用户指南 中了解更多信息。

0.5 版本新增。

参数:
stepstuple 列表

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

transform_inputstr 列表, 默认为 None

应由管道转换后传递给消费步骤的 元数据 参数名称。

这使得 fit 的某些输入参数(除了 X 之外)能够被管道的步骤转换,直到需要它们的步骤。需求通过 元数据路由 定义。例如,这可用于通过管道传递验证集。

只有在启用了元数据路由(可以使用 sklearn.set_config(enable_metadata_routing=True) 启用)的情况下才能设置此项。

1.6 版本新增。

memorystr 或具有 joblib.Memory 接口的对象, 默认为 None

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

verbosebool, default=False

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

属性:
named_stepsBunch

按名称访问步骤。

classes_形状为 (n_classes,) 的 ndarray

类别标签。

n_features_in_int

在第一步 fit 方法期间看到的特征数。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

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

另请参阅

make_pipeline

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

示例

>>> 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())])
>>> # 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
decision_function(X, **params)[source]#

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

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

参数:
Xiterable

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

**paramsstr -> object 字典

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

1.4 版本新增: 仅当 enable_metadata_routing=True 时可用。有关更多详细信息,请参阅 元数据路由用户指南

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

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

fit(X, y=None, **params)[source]#

拟合模型。

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

参数:
Xiterable

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

yiterable, 默认为 None

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

**paramsstr -> object 字典
  • 如果 enable_metadata_routing=False (默认):传递给每个步骤 fit 方法的参数,其中每个参数名称都带有前缀,例如步骤 s 的参数 p 键为 s__p

  • 如果 enable_metadata_routing=True:步骤请求和接受的参数。每个步骤必须已请求某些元数据,以便将这些参数转发给它们。

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

有关更多详细信息,请参阅 元数据路由用户指南

返回:
selfobject

具有拟合步骤的管道。

fit_predict(X, y=None, **params)[source]#

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

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

参数:
Xiterable

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

yiterable, 默认为 None

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

**paramsstr -> 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)[source]#

拟合模型并使用最终估计器进行转换。

依次拟合所有转换器并按顺序转换数据。仅当最终估计器实现 fit_transform 或同时实现 fittransform 时有效。

参数:
Xiterable

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

yiterable, 默认为 None

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

**paramsstr -> 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) 的 ndarray

转换后的样本。

get_feature_names_out(input_features=None)[source]#

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

使用管道转换输入特征。

参数:
input_featuresarray-like of str or None, default=None

输入特征。

返回:
feature_names_outstr 对象的 ndarray

转换后的特征名称。

get_metadata_routing()[source]#

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

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRouter

封装路由信息的 MetadataRouter

get_params(deep=True)[source]#

获取此估计器的参数。

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

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsstr -> any 的映射

参数名称映射到其值。

inverse_transform(X, **params)[source]#

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

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

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

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

**paramsstr -> object 字典

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

1.4 版本新增: 仅当 enable_metadata_routing=True 时可用。有关更多详细信息,请参阅 元数据路由用户指南

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

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

property named_steps#

按名称访问步骤。

只读属性,用于按给定名称访问任何步骤。键是步骤名称,值是步骤对象。

predict(X, **params)[source]#

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

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

参数:
Xiterable

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

**paramsstr -> 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)[source]#

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

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

参数:
Xiterable

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

**paramsstr -> 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)[source]#

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

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

参数:
Xiterable

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

**paramsstr -> 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)[source]#

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

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

参数:
Xiterable

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

yiterable, 默认为 None

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

sample_weightarray-like, 默认为 None

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

**paramsstr -> object 字典

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

1.4 版本新增: 仅当 enable_metadata_routing=True 时可用。有关更多详细信息,请参阅 元数据路由用户指南

返回:
scorefloat

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

score_samples(X)[source]#

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

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

参数:
Xiterable

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

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

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

set_output(*, transform=None)[source]#

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

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

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

配置 transformfit_transform 的输出。

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

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 转换配置保持不变

1.4 版本新增: 添加了 "polars" 选项。

返回:
selfestimator instance

估计器实例。

set_params(**kwargs)[source]#

设置此估计器的参数。

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

参数:
**kwargsdict

此估计器的参数或 steps 中包含的估计器的参数。可以使用步骤名称和参数名称(中间用 '`__`' 分隔)来设置步骤的参数。

返回:
selfobject

Pipeline 类实例。

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

配置是否应请求元数据以传递给 score 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

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

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

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

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

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

在版本 1.3 中新增。

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

score 方法中 sample_weight 参数的元数据路由。

返回:
selfobject

更新后的对象。

transform(X, **params)[source]#

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

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

当最终估计器为 None 时,这也会起作用,在这种情况下会应用所有先前的转换。

参数:
Xiterable

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

**paramsstr -> object 字典

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

1.4 版本新增: 仅当 enable_metadata_routing=True 时可用。有关更多详细信息,请参阅 元数据路由用户指南

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

转换后的数据。