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

Sklearn逻辑回归在80/20平衡数据集仅预测单一类别问题求助

问题解答

1. 现象是否正常?

完全正常,原因如下:

  • 默认LogisticRegression对所有样本权重一致,而你的数据集多数类(0)占比83.5%,模型预测全0就能获得83%左右的准确率,这种情况下模型会自然偏向多数类,导致少数类(1)的召回率为0——这是不平衡数据集下的典型问题。
  • 设置class_weight='balanced'后,模型会根据类别占比自动调整权重(少数类权重=总样本数/(类别数×该类样本数)),迫使模型关注少数类。这时候模型会开始预测类别1,但不可避免会错分一部分多数类样本。由于加权F1-score是按类别样本量加权计算的,多数类的权重远高于少数类,错分多数类会大幅拉低加权F1值,所以从0.76降到0.59是合理的权衡结果。

2. 是否需要先重平衡数据集?

不一定必须,要根据你的业务目标选择方案:

  • 如果核心目标是识别出违约用户(类别1),那么召回率、精确率(针对类别1)比整体加权F1更重要。此时可以选择:
    • 继续使用class_weight='balanced',但重点关注类别1的召回率、精确率、F1-score(而非加权F1)
    • 重采样:
      • 过采样:对少数类样本进行复制或生成合成样本(比如SMOTE),注意避免过拟合
      • 欠采样:随机删除多数类样本,注意不要丢失重要信息
  • 如果业务允许一定的漏检违约用户,但要求整体准确率高,那默认设置可能更适合,但显然你的场景应该更关注违约用户识别。

额外建议

  • 评估模型时,不要只看加权F1或准确率,重点关注少数类的召回率、精确率、F1,或者使用ROC-AUC(不受类别不平衡影响)、PR-AUC(更适合不平衡数据集)
  • 可以尝试调整LogisticRegression的正则化参数C,配合class_weight='balanced',可能在少数类识别和整体性能之间找到更好的平衡
  • 除了逻辑回归,也可以试试对不平衡数据更友好的模型,比如XGBoost、LightGBM,它们自带样本权重或不平衡处理参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:48:19