使用print打印confusion matrix时如何显示完整内容无省略号
打印混淆矩阵出现省略号的解决方案
出现省略号是numpy的默认打印规则导致:当数组元素总数超过默认阈值(1000)时就会自动截断显示,你用其他模型没有该问题,是因为对应模型分类数量少,生成的混淆矩阵尺寸小,未触发截断规则。
你之前尝试的numpy.set_printoptions(threshold=sys.maxsize)配置无效,通常是两个原因:
- 没有提前导入
sys模块就调用了sys.maxsize - 配置语句放在了打印混淆矩阵的代码之后,未生效
可行解决方案
方案1:修正numpy打印配置(推荐)
提前导入依赖并配置打印规则即可,完整代码如下:
import sys import numpy as np from sklearn.metrics import confusion_matrix # 放在打印代码前执行,关闭numpy数组截断 np.set_printoptions(threshold=sys.maxsize) # 原有业务代码 model.load_weights('action.h5') yhat = model.predict(X_test) ytrue = np.argmax(y_test, axis=1).tolist() yhat = np.argmax(yhat, axis=1).tolist() # 输出完整混淆矩阵 print(confusion_matrix(ytrue, yhat))
方案2:转Python原生列表打印
Python列表打印没有截断规则,无需额外配置:
cm = confusion_matrix(ytrue, yhat) print(cm.tolist())
方案3:逐行打印(可读性更高)
cm = confusion_matrix(ytrue, yhat) for row in cm: print(row)
方案4:用pandas格式化输出
适合分类多的场景,输出对齐更清晰:
import pandas as pd cm = confusion_matrix(ytrue, yhat) print(pd.DataFrame(cm))
内容的提问来源于stack exchange,提问作者konoa
相关产品推荐
相关产品推荐

