You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同时存在文本与数值特征时如何搭建适配GridSearchCV的pipeline?

混合文本与数值特征的分类任务Pipeline搭建指南

需求说明

在同时包含文本特征和数值特征的分类任务中,需要完成以下全流程自动化操作:

  • 单独对文本列运行CountVectorizer做词频向量化
  • 将向量化后输出的稀疏矩阵与原数值特征拼接
  • 拼接后的特征统一输入分类器训练
  • 全流程支持GridSearchCV做超参数搜索

可行实现代码

# 依赖导入(若未提前导入可补充)
from sklearn.pipeline import Pipeline, ColumnTransformer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV

# X_train包含两列:['text','num'],分别为文本特征列和数值特征列
# y_train包含单列标签:['label']

# 定义文本列的处理流水线
word_transformer = Pipeline(steps = [('cvec', CountVectorizer())])

# 定义列转换器:文本列走自定义处理逻辑,其余数值列直接保留
preprocessor = ColumnTransformer(
    transformers = [('wt', word_transformer, ['text'])],
    remainder = 'passthrough'
)

# 定义全流程流水线:先做特征预处理,再输入随机森林分类器
pipe = Pipeline(steps=[
    ('preprocessor', preprocessor),
    ('RBC', RandomForestClassifier())
])

# 定义GridSearchCV的超参数搜索范围
# 参数命名规则:用双下划线__逐层嵌套调用组件的参数
pipe_params = {
    'preprocessor__wt__cvec__max_features': [1500, 2000, 3000],
    'RBC__max_features': ['sqrt', 'log2']
}

# 初始化网格搜索,采用5折交叉验证
gs = GridSearchCV(pipe, 
                  param_grid=pipe_params, 
                  cv=5)

# 启动训练和超参数搜索
gs.fit(X_train, y_train)

核心规则说明

嵌套组件的参数调用需遵循双下划线逐层匹配规则:

  • 第一层匹配Pipeline中定义的组件别名,比如示例中的preprocessor、RBC
  • 后续层级依次匹配下层组件的自定义别名,直到最后一级为需要调整的参数名
  • 该规则适用于所有Pipeline、ColumnTransformer嵌套的超参数搜索场景

内容的提问来源于stack exchange,提问作者Chee Yuan Ng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:54:00