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

CNN+LSTM模型生成混淆矩阵时报ValueError样本数量不一致求助

问题根源

错误触发的核心原因是你对测试集标签做argmax运算时指定的轴参数错误,同时你的数据集划分逻辑也存在逻辑错误:

  • 首先看你处理标签的两行代码:
y_pred= np.argmax(Y_pred2, axis=1) # prediksi
y_test=np.argmax(Y_test, axis=0)

你的Y_test是独热编码格式,形状为(测试集样本数, 类别数),你指定axis=0相当于沿着样本维度取最大值索引,输出结果的长度等于你的类别数(报错中的4就是你设置的n_labels值);而y_pred是沿着axis=1(类别维度)取索引,输出结果长度等于测试集样本数(报错中的304)。二者长度不一致,就触发了混淆矩阵的样本数不一致报错。

  • 第二个隐藏问题是你的训练集/测试集划分逻辑错误:
X_train=Train_data[:int(Totalnb * 0.9),:]
Y_train=Train_label[:int(Totalnb * 0.9)]
X_test=Train_data[int(Totalnb * 0.1):,:]
Y_test=Train_label[int(Totalnb * 0.1):]

你这里训练集取的是前90%样本,测试集取的是后90%样本,二者存在80%的重叠,完全不符合数据集划分的要求,正确的测试集应该取总样本的后10%。

修复方案

把上述两处错误修改为如下代码即可:

  1. 修正数据集划分逻辑:
X_train=Train_data[:int(Totalnb * 0.9),:]
Y_train=Train_label[:int(Totalnb * 0.9)]
# 测试集从90%的位置开始取,而不是10%的位置
X_test=Train_data[int(Totalnb * 0.9):,:]
Y_test=Train_label[int(Totalnb * 0.9):]
  1. 修正标签argmax的轴参数:
y_pred= np.argmax(Y_pred2, axis=1)
# 沿着类别维度(axis=1)取最大值索引,和y_pred保持一致
y_test=np.argmax(Y_test, axis=1)

修改完成后再运行混淆矩阵相关代码即可正常输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:15:00