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_steps
Bunch
访问步骤按名称。
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
score
method.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 toscore
if 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_weight
parameter 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)
转换后的数据。