当前位置: 首页 > news >正文

Scikit-learn Pipeline:构建可复用的 ML 流水线

Scikit-learn Pipeline:构建可复用的 ML 流水线

1. Pipeline 基础

fromsklearn.pipelineimportPipelinefromsklearn.preprocessingimportStandardScalerfromsklearn.decompositionimportPCAfromsklearn.ensembleimportRandomForestClassifier# 创建流水线pipe=Pipeline([('scaler',StandardScaler()),('pca',PCA(n_components=10)),('clf',RandomForestClassifier(n_estimators=100))])# 训练pipe.fit(X_train,y_train)# 预测y_pred=pipe.predict(X_test)# 评分score=pipe.score(X_test,y_test)

2. ColumnTransformer

fromsklearn.composeimportColumnTransformerfromsklearn.preprocessingimportStandardScaler,OneHotEncoderfromsklearn.imputeimportSimpleImputer numeric_features=['age','income','score']categorical_features=['city','gender']preprocessor=ColumnTransformer([('num',Pipeline([('imputer',SimpleImputer(strategy='median')),('scaler',StandardScaler()),]),numeric_features),('cat',Pipeline([('imputer',SimpleImputer(strategy='most_frequent')),('encoder',OneHotEncoder(handle_unknown='ignore')),]),categorical_features),])# 完整流水线pipe=Pipeline([('preprocessor',preprocessor),('classifier',RandomForestClassifier())])

3. 自定义 Transformer

fromsklearn.baseimportBaseEstimator,TransformerMixinclassFeatureEngineer(BaseEstimator,TransformerMixin):def__init__(self,add_interaction=True):self.add_interaction=add_interactiondeffit(self,X,y=None):returnselfdeftransform(self,X):X=X.copy()X['price_per_sqft']=X['price']/X['area']ifself.add_interaction:X['age_income']=X['age']*X['income']returnX# 使用pipe=Pipeline([('feature_eng',FeatureEngineer()),('scaler',StandardScaler()),('clf',RandomForestClassifier())])

4. GridSearch + Pipeline

fromsklearn.model_selectionimportGridSearchCV param_grid={'pca__n_components':[5,10,15],'clf__n_estimators':[50,100,200],'clf__max_depth':[5,10,None],}grid=GridSearchCV(pipe,param_grid,cv=5,scoring='accuracy')grid.fit(X_train,y_train)print(f"最佳参数:{grid.best_params_}")

总结

组件作用
Pipeline串联处理步骤
ColumnTransformer按列分别处理
FeatureUnion并行特征提取
自定义 Transformer封装业务逻辑
http://www.cnnetsun.cn/news/3223872.html

相关文章:

  • 直播带货,知识与销售并行
  • 457. Java 反射 - 深度访问
  • 智融交通·绿动未来 | 智能新能源车辆数字主线技术与产业论坛成功举办
  • 高压隔离技术:ISOM8710与PIC32MZ的工业应用解析
  • IQR与MAD异常值检测实战:3种数据分布场景下的Python代码与效果对比
  • 萨科微slkor2026年7月6日“每日芯闻”。国际芯闻:
  • KMS_VL_ALL_AIO:Windows系统一键激活的终极解决方案
  • 户外LED广告牌尺寸规格大全
  • NAS / 服务器断电数据丢失?UPS 配套 USB关机保护板,市电断电池低自动提示服务器/电脑关机
  • easyMarkets平台评测:工具体验与平台稳定性有哪些观察重点
  • VLM增强的语义蒙特卡洛定位:让机器人真正看懂环境
  • 人生解释器的最小单位是什么?
  • 直击零线过载隐患 中线安防保护器综合治理方案
  • 细胞系vs原代:原代牙周韧带成纤维细胞,为什么不能用细胞系代替?
  • 2026年无锡干细胞机构如何考量?解析行业布局与合规焦点
  • 数字人制作公司哪家好?2026年聚焦全栈能力与行业落地的服务商推荐
  • MiMo-V2.5-TTS 全系列API使用:语音合成 + 音色克隆 + 音色设计 + 唱歌模式(限时免费)
  • 增量数据如何自动分类分级,避免目录“过期“?
  • 如何永久保存你的微信记忆:3步实现聊天记录完整备份与智能分析
  • 计算机毕业设计之考勤系统设计与实现
  • 若依系统 Druid 监控 9 个默认路径探测与弱口令爆破实战
  • J-space:Claude的意识起源,它已经注意到自己正在被测试了!
  • 10分钟部署开源智能体,零代码搞定AI写作+办公自动化!
  • 基于RocketMQ事务消息解耦霸王餐外卖CPS订单与返利发放流程
  • 2026年AI论文工具大揭秘,这几款让你的论文写作效率飙升
  • AI听力口语陪练,科学训练方法论驱动的开源APP
  • Git SSL握手失败怎么办?零基础解决GnuTLS与OpenSSL兼容问题
  • 拒绝无效社交,青少年如何建立高质量人际关系
  • 2026年Q3领英大变革!AI驱动社交销售新范式——从“人找客户“到“AI帮找客户“
  • 2026安康黄金回收白银回收铂金回收靠谱临街实体公安备案支持到店核验门店联系方式推荐