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

调用make_column_transformer拟合训练集报tuple index out of range如何解决

问题根因

两个核心问题触发了本次报错:

  • 你构造的X_train是一维Series结构(shape为(2020896,)),scikit-learn的列转换器要求输入至少二维的表格结构,代码尝试访问X.shape[1]获取列数时,一维数组没有第二个维度,直接触发索引越界。
  • 列转换器的配置和输入数据不匹配:你在转换器中指定要处理["Time", "Open"]两列,但实际构造X_btc时只提取了Time单列,输入的数据源里根本不存在Open列,同时逻辑冗余——Unix时间戳和比特币开盘价都是连续值,不需要做OneHot独热编码。
修复方案

步骤1:调整特征构造逻辑

如果你是要用时间戳预测开盘价,将单列提取改为双括号提取,得到二维DataFrame结构:

# 原错误代码:X_btc = btc_data["Time"]
X_btc = btc_data[["Time"]] # 双括号提取得到二维结构,shape为(样本数, 1)
y_btc = btc_data["Open"]

如果你后续需要把开盘价也作为特征输入,直接在双括号里加列即可,比如X_btc = btc_data[["Time", "Open"]],注意同步调整标签列的定义。

步骤2:修改列转换器配置

删掉冗余的独热编码配置,仅保留需要的归一化逻辑:

ct = make_column_transformer(
    (MinMaxScaler(), ["Time"]),
)

步骤3:运行后续代码

完成上述修改后,再执行ct.fit(X_train)和后续的转换操作就不会触发维度错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:15:01