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

决策树分类器误判浮点型独热编码为数值,转int失败如何解决?

解决独热编码浮点型0/1转整型的问题

方法1:直接转换指定列的类型

如果明确知道哪些是独热编码的列(比如包含time_signature或key的列),可以直接用astype(int)转换:

# 遍历目标列并转换类型
for col in df.columns:
    if 'time_signature' in col or 'key' in col:
        df[col] = df[col].astype(int)

方法2:自动识别所有二元浮点列并转换

如果不确定列名,可以先筛选出所有值仅为0.0和1.0的列,再批量转换:

# 筛选所有值都是0.0或1.0的列
binary_float_cols = [col for col in df.columns if set(df[col].unique()).issubset({0.0, 1.0})]
# 转换为整型
df[binary_float_cols] = df[binary_float_cols].astype(int)

注意事项

如果转换时报错,大概率是列中存在**缺失值(NaN)**或非0/1的浮点值:

  • 先检查列的唯一值:print(df[col].unique()),确认是否有异常值
  • 若有缺失值,先填充再转换(比如用0填充):
df[binary_float_cols] = df[binary_float_cols].fillna(0).astype(int)

转换后,决策树会将这些特征视为离散型的二元特征,分割逻辑会直接区分0和1的类别,不会再出现以0.5作为分割点的情况。

内容的提问来源于stack exchange,提问作者Willem van der Hoeven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:00:16