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

机器学习项目:对布尔数组应用LabelEncoder报ValueError如何解决?

问题分析与解决方法

报错原因

  1. 切片索引错误:ruzgar = data.iloc[:,3:4].values取的是数据集的第4列(iloc遵循左闭右开规则,索引3对应第4列),得到的是形状为(14,1)的二维数组。但后续ruzgar[:,3:4]试图访问数组的第3到4列,而该数组仅包含1列(列索引为0),因此这个切片返回的是形状为(14,0)的空数组。
  2. 形状不匹配:le.fit_transform(data.iloc[:,3:4])返回的是形状为(14,)的一维数组,无法赋值到形状为(14,0)的空数组中,触发ValueError。

解决方法

方法一:直接处理目标列并赋值(推荐)

无需额外生成数组,直接在DataFrame上完成编码,或者生成正确形状的数组:

data = pd.read_csv('odev_tenis.csv')
le = preprocessing.LabelEncoder()

# 方式1:直接修改原DataFrame的目标列
data.iloc[:,3] = le.fit_transform(data.iloc[:,3])

# 方式2:生成二维数组形式的编码结果
ruzgar = le.fit_transform(data.iloc[:,3]).reshape(-1, 1)

方法二:修正切片索引

如果要保留原数组操作的逻辑,修正切片索引为数组实际存在的列(索引0):

data = pd.read_csv('odev_tenis.csv')
le = preprocessing.LabelEncoder()

ruzgar = data.iloc[:,3:4].values
# 访问数组的第0列(唯一存在的列)进行赋值
ruzgar[:,0] = le.fit_transform(data.iloc[:,3])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:16:03