You need to enable JavaScript to run this app. sklearn用ColumnTransformer多列不同预处理报1D数据错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

sklearn用ColumnTransformer多列不同预处理报1D数据错误如何解决

错误原因

StandardScaler、OneHotEncoder这类预处理器要求输入为二维数组结构,当你给ColumnTransformer的列选择器传单个字符串(比如'count')时,ColumnTransformer会把对应列以一维Series的形式传给预处理器,不符合输入要求;而TfidfVectorizer本身适配一维文本序列输入,所以之前单独处理text列时不会报错。

解决方法

把需要传给StandardScaler、OneHotEncoder的列名从单个字符串改为包裹在列表里的形式,哪怕只有一列也要用列表包裹,保证传入的是二维结构。

修改后的代码如下:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import OneHotEncoder

transformer = ColumnTransformer([
    ('vectorizer', TfidfVectorizer(ngram_range=(1, 1)), 'text'),
    ('scaler', StandardScaler(), ['count']), # 单元素列表包裹列名,传入二维结构
    ('enc', OneHotEncoder(), ['daytime']) # 同理用列表包裹
], remainder='passthrough')

X_transformed = transformer.fit_transform(X)

内容的提问来源于stack exchange,提问作者Nankatsu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 03:12:01