Pipeline#
- class sklearn.pipeline.Pipeline(steps, *, memory=None, verbose=False)#
一个带有可选最终预测器的数据转换器序列。
Pipeline允许你按顺序将一系列转换器应用于预处理数据,并且如果需要,以最终的 预测器 结束序列进行预测建模。管道的中间步骤必须是 ‘转换’,即它们必须实现
fit和transform方法。 最终的 估计器 只需要实现fit。可以使用memory参数缓存管道中的转换器。管道的目的是将几个步骤组合在一起,可以在设置不同参数的同时进行交叉验证。为此,它允许使用步骤名称和参数名称用
'__'分隔来设置各个步骤的参数,如下例所示。可以通过将其名称的参数设置为另一个估计器来完全替换步骤的估计器,或者通过将其设置为'passthrough'或None来移除转换器。有关
Pipeline与GridSearchCV结合使用的示例用例,请参阅 使用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_steps或steps来检查管道中的估计器。当拟合耗时较长时,缓存转换器是有优势的。- 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_std或return_cov,但管道中转换生成的不确定性不会传播到最终估计器。
- Returns:
- y_predndarray
调用最终估计器的
fit_predict的结果。
- fit_transform(X, y=None, **params)#
拟合模型并通过最终估计器进行转换。
依次拟合所有转换器并顺序转换数据。仅在最终估计器实现
fit_transform或fit和transform时有效。- 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)#
获取此估计器的参数。
返回在构造函数中给出的参数以及包含在
Pipeline的steps中的估计器的参数。- 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_std或return_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
配置
transform和fit_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
scoremethod.Note that this method is only relevant if
enable_metadata_routing=True(seesklearn.set_config). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True: metadata is requested, and passed toscoreif provided. The request is ignored if metadata is not provided.False: metadata is not requested and the meta-estimator will not pass it toscore.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_weightparameter inscore.
- 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)
转换后的数据。