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

使用OneHotEncoder(drop='first')后数据集丢失3个值的原因咨询

解析:OneHotEncoder运行后3个类别消失的原因

问题根源在于你给OneHotEncoder设置了drop="first"参数——这个参数会针对每个指定的分类列,自动删除该列第一个类别对应的编码列。你一共选了3个分类列(Sex、Fasting_Blood_Sugar、Exercise_Angina),每个列删掉一个类别,加起来正好是3个,这就是你看到的“3个值被删除”的现象。

具体场景拆解

假设你的三个分类列都是二元取值(比如Sex为男/女、Fasting_Blood_Sugar为0/1、Exercise_Angina为否/是):

  • 处理Sex时,drop="first"会删掉第一个类别(比如男)的编码列,只保留女对应的编码列
  • 处理Fasting_Blood_Sugar时,删掉第一个类别(比如0)的编码列,只保留1对应的编码列
  • 处理Exercise_Angina时,删掉第一个类别(比如否)的编码列,只保留是对应的编码列

原本每个二元列会生成2个编码列,现在每个列只生成1个,总共减少了3个编码列,对应你观察到的“3个值被删除”。

这个参数的设计目的

drop="first"是用来避免多重共线性的:如果保留所有类别的编码列,列之间会存在线性关联(比如知道某样本不是男,就必然是女),这种关联会干扰线性模型(如线性回归、逻辑回归)的训练效果。删掉一个类别就能打破这种依赖关系。

补充说明

  • 若不想删除任何类别,直接移除drop="first"参数即可,这样每个分类列的所有类别都会生成对应的编码列
  • 你可以通过encoder.get_feature_names_out()查看编码后的列名,能清晰看到哪些类别被保留了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:17:15