管道#
- class feature_engine.pipeline.Pipeline(steps, *, memory=None, verbose=False)[源代码][源代码]#
一系列数据转换器,带有一个可选的最终预测器。
Pipeline
允许你按顺序应用一系列转换器来预处理数据,并且如果需要,可以在序列的最后使用一个最终的predictor
来进行预测建模。管道的中间步骤必须是’转换器’,也就是说,它们必须实现
fit
和transform
方法。最终的estimator
只需要实现fit
。管道中的转换器可以使用memory
参数进行缓存。此管道允许中间的转换器从数据集中移除行。它将自动调整目标变量以匹配剩余的观测值。
管道的目的是将几个步骤组合在一起,这些步骤可以在设置不同参数的同时进行交叉验证。为此,它允许使用步骤名称和参数名称之间用
'__'
分隔的方式来设置各个步骤的参数,如下例所示。一个步骤的估计器可以通过将其名称的参数设置为另一个估计器来完全替换,或者通过将其设置为'passthrough'
或None
来移除一个转换器。更多详情请参阅 用户指南。
- 参数
- 步骤元组列表
一系列 (步骤名称, 估计器) 元组,这些元组将按顺序链接在一起。为了与 scikit-learn API 兼容,所有步骤都必须定义
fit
。所有非最后一步还必须定义transform
。更多详情请参见 组合估计器。- 内存str 或具有 joblib.Memory 接口的对象,默认=None
用于缓存管道的拟合转换器。即使最后一步是转换器,也不会被缓存。默认情况下,不执行缓存。如果给定一个字符串,它是缓存目录的路径。启用缓存会在拟合之前触发转换器的克隆。因此,给定到管道的转换器实例不能直接检查。使用属性
named_steps
或steps
来检查管道中的估计器。当拟合耗时较长时,缓存转换器是有优势的。- 详细bool, 默认=False
如果为真,每个步骤拟合所花费的时间将在完成后打印出来。
- 属性
named_steps
Bunch
按名称访问步骤。
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_std
或return_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)[源代码][源代码]#
获取此估计器的参数。
返回构造函数中给出的参数以及
Pipeline
的steps
中包含的估计器。- 参数
- 深度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_std
或return_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
score
中sample_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_transform
或fit
和transform
时有效。- 参数
- 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
转换后的目标。