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

使用OneHotEncoder编码分类变量后,是否需删除原列?特征重要性疑问

关于独热编码后原始列处理与特征重要性的疑问

我使用OneHotEncoder对邮政编码(zipcode)进行编码后输入随机森林模型,代码如下:

from sklearn.preprocessing import OneHotEncoder
one_hot = OneHotEncoder()
encoded = one_hot.fit_transform(df[['zipcode']])
df[one_hot.categories_[0]] = encoded.toarray()

请问是否需要从自变量中删除原始的zipcode列?还是sklearn会自动处理该问题?
我提出此疑问主要是因为zipcode列显示为第二重要特征,这是否是所有独热编码后特征的重要性聚合?


解答:

  • 必须手动删除原始zipcode列:sklearn不会自动处理重复特征问题。原始zipcode列和独热编码生成的列属于同一信息的不同表达,同时输入模型会造成特征冗余,既干扰模型训练逻辑,也会让特征重要性计算出现偏差。
  • zipcode列的重要性不是聚合结果:随机森林的特征重要性是针对单个独立特征计算的。如果原始zipcode列没被删除,模型会把它当成单独特征评估重要性,独热编码后的每一列也会各自计算重要性。你看到原始zipcode列排第二,是因为模型误将类别型的zipcode当成数值型特征处理(比如认为"10001"比"10002"有数值顺序意义),这不符合zipcode作为类别特征的实际含义,属于错误的重要性评估结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:54:35