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

sklearn DummyClassifier预测异常:预期为S却输出C的问题排查

排查DummyClassifier most_frequent策略预测不符的问题

以下是几个最可能的原因和对应的排查步骤:

  • 训练集实际类别分布和预期不符
    别想当然认为S是数据集里的多数类,先实打实统计训练集中两类的数量:

    # 用pandas统计(如果标签是Series)
    import pandas as pd
    print(pd.Series(y_train).value_counts())
    
    # 用numpy统计(如果标签是数组)
    import numpy as np
    counts = np.bincount(y_train)
    print(f"类别0数量: {counts[0]}, 类别1数量: {counts[1]}")
    

    要是训练集里C的样本数确实更多,那模型输出C就是正常的——most_frequent策略只会输出训练集里出现最多的类别,不是整个数据集的。

  • 标签编码/映射搞反了
    如果你给标签做过编码(比如把S转成0、C转成1,或者反过来),别直接把模型输出的数字当成原始标签。可以打印模型的classes_属性看对应关系:

    print(dummy_clf.classes_)
    

    这个数组的索引对应模型输出的编码值,比如classes_ = ['S', 'C']的话,输出0对应S,1对应C。

  • 数据划分或模型拟合的低级错误

    • 检查train_test_split有没有传错参数:比如stratify参数是不是传成了X而不是y,导致分层失效,训练集类别失衡;或者没加stratify,随机划分刚好把多数S分到了测试集里。
    • 确认模型初始化时策略确实是most_frequent,有没有写成stratified或其他;拟合时有没有把X和y搞混(比如dummy_clf.fit(y_train, X_train)这种低级错误)。
  • 对"预期输出"的误解
    别把测试集的真实标签当成most_frequent策略的预期输出——该策略的预期输出是训练集的多数类,和测试集的类别分布无关。比如测试集里S多,但训练集里C多,模型输出C是正确的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:43:20