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

pandas类别特征转数值后训练决策树报错ValueError: at least one array or dtype is required

问题原因

你的代码执行顺序错误导致训练特征集为空:

  • 你先执行了map_categorical_features(df)完成了所有类别特征的数值编码,编码后原来的object类型特征全部转为了数值类型
  • 之后你再调用get_categorical_features(df),这个函数的逻辑是筛选object类型的列,此时已经没有符合条件的列,返回空列表,最终构造的X、X_train、X_test都是空数据集,模型训练时缺少输入特征因此抛出报错。
修复方法

调整代码执行顺序,在特征编码之前先提取类别特征列表:

# 编码前先提取所有类别特征列名,此时特征还是object类型可正常筛选
categorical_features = get_categorical_features(df)

# 再执行类别特征编码
mapped_df = map_categorical_features(df)

# 用提前保存的特征列表构造训练集
X = mapped_df[categorical_features]
# 额外提示:标签RainTomorrow还是Yes/No的字符串格式,建议转成数值避免后续报错
y = mapped_df['RainTomorrow'].map({'Yes':1, 'No':0})

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:15:02