[ PROMPT_NODE_27354 ]
pipelines_and_composition
[ SKILL_DOCUMENTATION ]
# 工作流管道与组合估计器参考
## 概述
工作流管道(Pipeline)将多个处理步骤串联成单个估计器,防止数据泄露并简化代码。它们实现了可复现的工作流,并能与交叉验证和超参数调优无缝集成。
## 管道基础
### 创建管道
**Pipeline (`sklearn.pipeline.Pipeline`)**
- 将转换器与最终估计器串联
- 所有中间步骤必须具有 fit_transform() 方法
- 最终步骤可以是任何估计器(转换器、分类器、回归器、聚类器)
- 示例:
python
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
pipeline = Pipeline([
('scaler', StandardScaler()),
('pca', PCA(n_components=10)),
('classifier', LogisticRegression())
])
# 拟合整个管道
pipeline.fit(X_train, y_train)
# 使用管道进行预测
y_pred = pipeline.predict(X_test)
y_proba = pipeline.predict_proba(X_test)
### 使用 make_pipeline
**make_pipeline**
- 便捷的构造函数,可自动生成步骤名称
- 示例:
python
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipeline = make_pipeline(
StandardScaler(),
PCA(n_components=10),
SVC(kernel='rbf')
)
pipeline.fit(X_train, y_train)
## 访问管道组件
### 访问步骤
python
# 通过索引
scaler = pipeline.steps[0][1]
# 通过名称
scaler = pipeline.named_steps['scaler']
pca = pipeline.named_steps['pca']
# 使用索引语法
scaler = pipeline['scaler']
pca = pipeline['pca']
# 获取所有步骤名称
print(pipeline.named_steps.keys())
### 设置参数
python
# 使用双下划线表示法设置参数
pipeline.set_params(
pca__n_components=15,
classifier__C=0.1
)
# 或者在创建时设置
pipeline = Pipeline([
('scaler', StandardScaler()),
('pca', PCA(n_components=10)),
('classifier', LogisticRegression(C=1.0))
])
### 访问属性
python
# 访问已拟合的属性
pca_components = pipeline.named_steps['pca'].components_
explained_variance = pipeline.named_steps['pca'].explained_variance_ratio_
# 访问中间转换结果
X_scaled = pipeline.named_steps['scaler'].transform(X_test)
X_pca = pipeline.named_steps['pca'].transform(X_scaled)
## 使用管道进行超参数调优
### 使用管道进行网格搜索