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

泰坦尼克数据集独热编码后训练报KeyError:指定特征不在索引

解决泰坦尼克数据集训练时的KeyError问题

兄弟,看你的报错信息我瞬间就get到问题了——你代码里喊着要找的列全是Airbnb数据集的(比如host_name_svd_0、amenities_svd_0这类),但你明明说在处理泰坦尼克数据集啊!这完全是数据集和特征列对不上导致的KeyError,咱们一步步来解决:

先搞懂报错本质

你的colsX列表里塞了一堆不属于泰坦尼克数据集的特征名,而你的dfX是处理后的泰坦尼克数据,自然找不到这些列,所以直接抛出了KeyError。那些带svd、host、amenities的列都是Airbnb项目里的特征,和泰坦尼克半毛钱关系都没有。

具体解决步骤

  1. 核对特征列与数据集的匹配度
    先打印出你当前泰坦尼克数据集的所有列,看看你实际有哪些特征:

    print(dfX.columns.tolist())
    

    然后对比colsX里的内容,把那些Airbnb相关的列全部删掉,替换成你做了独热编码的泰坦尼克特征(比如Pclass_1、Sex_male、Embarked_S这类)。

  2. 检查数据集加载逻辑
    你大概率是在代码里不小心加载了Airbnb的数据集文件!去翻一下数据加载的代码块,确保读入的是泰坦尼克的处理后文件(比如titanic_onehot.csv这类),而不是其他项目的数据文件。

  3. 验证独热编码的结果
    你说已经完成了独热编码,那可以用这段代码快速找出colsX里哪些列是不存在的:

    # 找出colsX中不在dfX里的列
    missing_cols = [col for col in colsX if col not in dfX.columns]
    print("缺失的特征列:", missing_cols)
    

    把这些missing_cols从colsX里彻底移除,或者确认是不是你在做独热编码时漏生成了某些列。

额外提醒

如果是你复用了其他项目(比如Airbnb分类)的代码模板,一定要把所有和数据集相关的变量、特征列、文件路径全部替换成泰坦尼克的内容,不然很容易出现这种张冠李戴的低级错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:00:58