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

朴素贝叶斯分类100%准确率存疑 小数据集建模如何排查

朴素贝叶斯三分类任务100%准确率排查方向

针对350条样本三分类任务中朴素贝叶斯得到100%准确率的异常结果,结合你贴出的代码,可按以下优先级逐一排查问题:

  • 先验证评估逻辑的可靠性:你设置的测试集占比仅10%,对应测试样本仅35条,且train_test_split未设置固定random_state参数,单次随机拆分很容易抽到特征区分度极高、与训练集分布高度重合的样本,偶然得到100%准确率。建议先固定随机种子,重复5-10次拆分训练计算平均准确率,同时改用分层K折交叉验证(保证每折类别分布与全量数据一致)评估模型真实效果,不要采信单次小测试集的评估结果。
  • 排查数据泄露问题:你代码中导入了预处理模块但未贴出完整预处理逻辑,需要确认所有特征缩放、编码、特征筛选、降维操作,都在训练集/测试集拆分完成后执行:即仅用训练集拟合预处理器,再分别转换训练集和测试集。如果在拆分前就用全量数据拟合预处理器,会把测试集的分布信息泄露给训练过程,直接导致准确率虚高。同时需要逐列检查特征字段,确认没有混入和标签直接强关联的“泄漏特征”,比如由标签直接计算得到的衍生字段、和标签一一对应的业务标识类字段。
  • 核对标签与测试集分布:逐样本比对测试集的预测结果和真实标签,一方面检查是否存在标签标注错误,比如某类样本标签批量打错,模型刚好拟合到错误标注的规律得到虚高结果;另一方面统计测试集的类别分布,确认是否因为随机拆分导致测试集类别分布偏差过大——你的C类样本仅70条,10%拆分比例下测试集C类样本仅个位数,若这部分样本特征辨识度极高,A、B类样本又存在明显分布差异,凑出全对结果的概率并不低。
  • 验证模型与特征的匹配度:你当前选用的GaussianNB默认特征服从高斯分布,如果你的特征以离散计数、分类独热编码特征为主,可以换成你已导入但未使用的MultinomialNB做对比实验,同时输出分类混淆矩阵、逐样本的预测置信度,确认是模型真的学到了有效分类规律,还是刚好在小测试集上蒙对了边界样本。

你提供的实现代码如下:

import sklearn
from sklearn.metrics import accuracy_score
X = feature_data_frame.values
y = label_data
import sklearn.preprocessing as preprocessing
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB, MultinomialNB
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=.10)
gnb = GaussianNB()
y_pred = gnb.fit(x_train, y_train).predict(x_test)
accuracy = accuracy_score(y_test, y_pred)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:39:19