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

使用sklearn ColumnTransformer的fit_transform()时遇'tuple index out of range'错误

数字数据集OneHot编码错误修复方案

错误根源

  1. 列索引越界:数据集前28列对应索引0-27,目标标签列是最后一列,索引应为28,原代码中dataset.iloc[:,29].values访问了不存在的列,触发后续维度错误。
  2. 工具误用:ColumnTransformer用于处理特征矩阵中指定列的转换,而单独的标签数组不需要该工具,直接用OneHotEncoder即可。
  3. 维度不匹配:OneHotEncoder要求输入为二维数组,原代码中一维的y不符合输入要求。

修正后的完整代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf

# 数据读取与拆分
dataset = pd.read_csv('dataset_cisla_polia2.csv', header=None, sep=';')
X = dataset.iloc[:, 0:28].values  # 提取前28列特征
y = dataset.iloc[:, 28].values     # 提取最后一列标签

from sklearn.preprocessing import OneHotEncoder

# 初始化编码器,设置sparse=False直接输出密集数组
encoder = OneHotEncoder(sparse=False)
# 将一维标签转为二维格式后执行编码
y_encoded = encoder.fit_transform(y.reshape(-1, 1))

# 验证输出格式
print(y_encoded)

关键说明

  • y.reshape(-1,1):将一维数组转换为N行1列的二维结构,满足编码器的输入要求。
  • sparse=False:让编码器返回常规numpy数组,而非稀疏矩阵,直接得到你需要的[1 0 0 ...]形式的编码结果。
  • 移除不必要的ColumnTransformer,简化标签编码流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:20:27