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

ANN模型生成无意义混淆矩阵的问题排查求助

问题原因分析
  • 数据集拆分逻辑冲突+类别分布抽样异常
    你先后两次调用了train_test_split函数,第一次拆分参数为test_size=0.3, random_state=0,第二次建模时用的是test_size=0.2, random_state=1,两次拆分逻辑不一致。结合你给出的训练集混淆矩阵看,训练集大概率只抽到了类别0的样本,模型学到的规则是永远输出0,如果测试集刚好全部是类别1的样本,就会出现训练集准确率100%、测试集准确率0的极端情况。你可以先输出y_train.value_counts()和y_test.value_counts()验证两边的类别分布。
  • 自定义评估函数参数顺序错误
    你使用的classificationSummary是非sklearn官方的自定义函数,如果该函数要求的入参顺序是(预测值, 真实值),而你传入的顺序是(真实值, 预测值),就会出现预测结果完全倒置的统计错误。你可以用sklearn官方指标函数验证结果:
    from sklearn.metrics import accuracy_score, confusion_matrix
    # 验证训练集结果
    print("训练集准确率:", accuracy_score(y_train, clf.predict(X_train)))
    print("训练集混淆矩阵:\n", confusion_matrix(y_train, clf.predict(X_train)))
    # 验证测试集结果
    print("测试集准确率:", accuracy_score(y_test, clf.predict(X_test)))
    print("测试集混淆矩阵:\n", confusion_matrix(y_test, clf.predict(X_test)))
    
  • 输入特征未做标准化处理
    MLP模型对输入特征的尺度非常敏感,如果你直接把原始未归一化/标准化的特征输入模型,lbfgs优化器很容易陷入局部最优解,输出极端的预测结果。建议在拆分数据集后对特征做标准化处理:
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    X_train = scaler.fit_transform(X_train)
    X_test = scaler.transform(X_test)
    
  • 超参数设置不当
    你设置的max_iter=200可能不足以让lbfgs优化器收敛,你可以打印clf.n_iter_查看实际迭代次数,若等于200说明未收敛,需要调大迭代次数。另外hidden_layer_sizes=(100)的写法不规范,单层隐藏层应写为(100,),旧版本sklearn可能会对整数输入报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:24:04