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

使用Markov聚类(MCL)生成数据标签时遇IndexError错误求助

解决MCL聚类标签生成的索引越界错误

错误原因分析

报错是因为out_label被定义为二维数组(形状(6,1)),循环中使用out_label[data]时,numpy会将元组data(比如(1,5))解析为(行索引, 列索引)的组合,但数组的列维度仅为1(索引范围0),当元组中的值大于0时(比如5),就会触发列索引越界。

另外原代码中变量名data和数据集重名,容易造成混淆,建议替换为cluster。

修正方案

方法1:使用一维数组存储标签(推荐)

将out_label定义为一维数组,直接通过行索引批量赋值,更简洁直观:

# Create labels
out_label = np.zeros(Matrix.shape[0], dtype=np.int)
for i, cluster in enumerate(clusters):
    # 将元组转为列表,批量索引行
    out_label[list(cluster)] = i  # 生成从0开始的标签,匹配期望结果
out_label

方法2:保留二维数组,明确列索引

如果需要保持out_label为二维数组,需指定固定的列索引(0):

# Create labels
out_label = np.zeros((Matrix.shape[0],1), dtype=np.int)
for i, cluster in enumerate(clusters):
    # 指定列索引为0,避免解析错误
    out_label[list(cluster), 0] = i  # 生成从0开始的标签,匹配期望结果
out_label

验证结果

运行修正后的代码,会得到符合期望的标签:

  • 一维形式:array([0, 1, 2, 3, 3, 1])
  • 二维形式:
array([[0],
       [1],
       [2],
       [3],
       [3],
       [1]])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:55:24