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

解决TypeError:列表索引应为整数/切片而非元组(混淆矩阵场景)

问题:计算深度学习模型混淆矩阵时的TypeError及Label参数传入问题

习惯用R,刚转Python做项目,计算深度学习模型的混淆矩阵时持续遇到错误:TypeError: list indices must be integers or slices, not tuple。检查传入的3个参数类型后发现类型不同,怀疑是问题根源。

最初将Label从数据框取出转为列表:Label=data['Label'].tolist(),后来修正为Label=data['Label'],但尝试用Label[0,1]和Label[0][1]传入confusion_matrix都无效,相关代码及报错信息如下:

q_aware_model.evaluate(X_test, y_test)
3912/3912 [==============================] - 4s 1ms/step - loss: 0.2378 - accuracy: 0.9361
Out[64]: [0.23779138922691345, 0.9361117482185364]

test_predict= q_aware_model.predict(X_test)
3912/3912 [==============================] - 4s 902us/step

cm=confusion_matrix(y_test,test_predict,Label[0,1])

TypeError                                 Traceback (most recent call last)
<ipython-input-83-951a7f1f1671> in <module>
----> 1 cm=confusion_matrix(y_test,test_predict,Label[0,1])

TypeError: list indices must be integers or slices, not tuple

type(Label)
Out[66] list

type(y_test)
Out[67]: pandas.core.frame.DataFrame

type(test_predict)
Out[68]: numpy.ndarray

解决方案

核心问题梳理

sklearn.metrics.confusion_matrix的参数有严格要求:

  1. y_true(真实标签)和y_pred(预测标签)必须是一维的类别标签序列/数组,不能是DataFrame或多维度的概率输出。
  2. labels参数是用来指定混淆矩阵的类别顺序,必须是完整的一维类别集合,不是单个元素。

分步修正代码

  1. 处理真实标签y_test:将DataFrame转为一维数组/列表

    # 方式1:用values.ravel()展平为一维数组
    y_test_flat = y_test.values.ravel()
    # 方式2:取DataFrame的第一列转为列表
    y_test_flat = y_test.iloc[:, 0].tolist()
    
  2. 处理预测结果test_predict:如果模型返回的是类别概率矩阵(比如二分类是(n_samples,2)的数组),需要先转为类别标签

    import numpy as np
    test_predict_labels = np.argmax(test_predict, axis=1)
    
  3. 处理类别标签集合Label:确保它是去重后的一维类别列表,直接传入labels参数

    # 从原数据中提取去重并排序的类别集合
    Label = sorted(data['Label'].unique().tolist())
    
  4. 计算混淆矩阵

    from sklearn.metrics import confusion_matrix
    cm = confusion_matrix(y_test_flat, test_predict_labels, labels=Label)
    

报错原因解释

  • Label[0,1]是用元组索引列表,而Python列表仅支持整数或切片索引,因此触发TypeError。
  • 另外,y_test作为DataFrame不是一维序列,test_predict如果是概率矩阵而非类别标签,这两个参数不符合confusion_matrix的要求,也会引发后续问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:14:57