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

过滤相关性≥0.9的特征时触发IndexError:布尔索引维度不匹配问题求助

解决高相关性特征过滤时的IndexError问题

这个错误的核心原因很明确:你用来筛选列的布尔数组columns长度是19,但你的数据集data一共有45列,两者维度不匹配,导致布尔索引无法正常工作。

为什么会出现这种情况?大概率是你计算相关系数矩阵corr的时候,没有基于整个数据集的所有特征计算——比如你可能只取了data的部分列来生成corr,导致corr.shape[0]是19,和data.columns的长度45对不上。

解决方案步骤:

  1. 确保相关系数矩阵基于整个数据集生成
    先检查你的corr生成代码,必须是基于data的所有列计算:

    corr = data.corr()  # 基于data所有特征计算相关性矩阵
    

    这样corr.shape[0]就会和data.columns的长度完全一致,生成的columns布尔数组长度也能匹配。

  2. 修正后的完整代码
    补全正确的相关性矩阵生成步骤后,你的代码就能正常运行:

    # 第一步:基于整个数据集计算特征相关性矩阵
    corr = data.corr()
    # 初始化布尔数组,长度与特征总数一致
    columns = np.full((corr.shape[0],), True, dtype=bool)
    for i in range(corr.shape[0]):
        for j in range(i+1, corr.shape[0]):
            if corr.iloc[i,j] >= 0.9:
                if columns[j]:
                    columns[j] = False
    # 此时维度匹配,不会触发索引错误
    selected_columns = data.columns[columns]
    data = data[selected_columns]
    
  3. 调试小技巧
    如果还是不确定问题所在,可以在代码中加入两行打印,确认维度是否一致:

    print(f"数据集特征总数:{data.shape[1]}")
    print(f"相关性矩阵的行数:{corr.shape[0]}")
    

    只要这两个数字相等,布尔索引就不会出现维度不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:02:38