SVM(RBF)多分类仅N类得分正常 其余类指标全0问题咨询
为何SVM(RBF)仅能识别N类,其他类评估指标全为0?
你在包含8528个样本的Pandas DataFrame上用SVM(RBF)执行4分类任务,50-50训练测试划分的评估结果如下:
precision recall f1-score support A 0.00 0.00 0.00 386 N 0.60 1.00 0.75 2563 O 0.00 0.00 0.00 1180 ~ 0.00 0.00 0.00 135 accuracy 0.60 4264
更换80-20、70-30等划分比例后结果仍一致,核心原因是样本类别严重不平衡,具体分析如下:
- 类别占比悬殊:测试集中N类占比约60%(2563/4264),和整体准确率完全匹配,说明模型全程只预测了N类。训练集里N类必然也是绝对多数,模型为了最大化整体准确率,会选择最“高效”的策略——全预测多数类,这样错分代价最低。
- 指标为0的逻辑:召回率为0是因为模型从未正确识别出A/O/~类的样本;精确率为0是因为模型从未输出过这三类的预测结果(分母为0时,评估工具通常显示0)。
- 划分比例不影响的原因:无论怎么拆分训练测试集,N类的主导地位都不会改变,模型的最优策略始终是只预测N类,因此结果无明显变化。
针对这个问题,可尝试以下解决方案:
- 调整样本分布:对少数类做过采样(如SMOTE算法生成合成样本),或对多数类做欠采样,平衡各类样本数量
- 设置类别权重:在SVM初始化时指定
class_weight='balanced',让模型对少数类的错分赋予更高代价 - 优化特征工程:挖掘能区分少数类和N类的关键特征,提升模型对少数类的辨识度
- 更换模型:选用对不平衡数据更鲁棒的模型,比如随机森林、XGBoost等集成模型
内容的提问来源于stack exchange,提问作者jasmine
相关产品推荐
相关产品推荐

