scikit-learn DummyClassifier 怎样建立分类基线
用 scikit-learn DummyClassifier 建立分类基线,可以先在训练集上拟合一个不使用特征值的分类器,再在与候选模型完全相同的留出集上计算相同指标。最小写法是选择 strategy="prior" 后调用 fit 和 predict。它提供的是“不利用特征也能做到什么程度”的参照,不是可直接上线的业务模型。
官方地址:https://scikit-learn.org/stable/modules/generated/sklearn.dummy.DummyClassifier.html
什么时候应该把基线加入评估任务
新建分类任务、改动特征或重新生成数据划分时,都应同步计算基线。如果一组样本中大部分都属于同一类,只预测多数类也可能得到很高准确率;候选模型的单独分数不能说明它真正利用了特征。
评估进程只需读取获准使用的特征和标签,不必拥有生产写入权限。下面使用合成数据,不读取个人信息、不连接业务系统。真实任务应明确样本可用时间和实体分组规则:同一个用户的相关记录不能仅为了方便就随机分散到训练和评估两侧;时间预测任务也不能把未来数据混入训练。
选定策略,固定同一比较口径
DummyClassifier 的所有策略都忽略 X 中的特征值,通常根据训练标签 y 决定预测行为。prior 的类别预测采用训练多数类,概率输出反映训练标签比例;most_frequent 的类别预测相同,但概率形式不同。需要可重复的随机参照时,可以显式选择随机策略并固定 random_state。
| 策略 | 适用参照 | 注意事项 |
|---|---|---|
| prior | 多数类预测及标签先验 | 默认策略应仍显式写出,便于记录 |
| most_frequent | 只关心多数类标签 | 不能与 prior 的概率输出混用 |
| stratified / uniform | 随机预测参照 | 固定种子并关注波动 |
| constant | 固定业务标签参照 | 明确 constant 标签及指标含义 |
比较口径至少包括训练索引、留出索引、标签定义、样本权重和指标名称。若训练集经过重采样,必须写清基线使用哪一份训练标签,不能无说明地把原始分布基线与另一种口径的分数并排。

用同一留出集生成最小比较记录
以下 Python 示例需要已安装 scikit-learn。它只在内存中生成二分类数据;数据划分和基线都显式记录参数。代码供读者复现,本文不提供虚构运行分数。
import json
import sklearn
from sklearn.datasets import make_classification
from sklearn.dummy import DummyClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, balanced_accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
# 合成不均衡样本,仅演示比较接口,不代表真实业务效果
X, y = make_classification(
n_samples=600, n_features=8, n_informative=4,
n_redundant=1, weights=[0.85, 0.15], random_state=29
)
# 一次划分后供两个分类器共同使用;仅适用于独立同分布示例
X_train, X_eval, y_train, y_eval = train_test_split(
X, y, test_size=0.3, stratify=y, random_state=31
)
models = {
"baseline": DummyClassifier(strategy="prior"),
# 标准化也只在训练数据上拟合
"candidate": make_pipeline(
StandardScaler(), LogisticRegression(max_iter=1000)
),
}
report = {
"sklearn_version": sklearn.__version__,
"split_seed": 31,
"baseline_strategy": "prior",
"metrics": {},
}
for name, model in models.items():
# 两个模型都不能使用留出标签参与拟合
model.fit(X_train, y_train)
predicted = model.predict(X_eval)
report["metrics"][name] = {
"accuracy": float(accuracy_score(y_eval, predicted)),
"balanced_accuracy": float(
balanced_accuracy_score(y_eval, predicted)
),
}
# 只输出汇总指标;异常时让进程失败,不生成伪造的成功记录
print(json.dumps(report, ensure_ascii=False, indent=2))
输出记录含版本、划分种子、基线策略和两个模型的指标。这里把标准化放进 Pipeline,避免先对整个数据集拟合变换再划分。迁移到真实数据时,还应保存实际样本索引或划分文件;单有随机种子无法抵消输入排序与数据内容变化。
分数达标与评估失败要分别处理
普通 accuracy 按全部样本的正确比例计分;balanced accuracy 对各类别召回率取平均,更容易暴露只猜多数类的局限。对于同时包含两类的二分类留出集,恒定预测一类时,一类召回率为 1,另一类为 0,因而 balanced accuracy 为 0.5。这是指标定义的推导,不是本例的实测结果。
候选模型超过基线,只说明在这份划分和这些指标上有增益,不能直接推出线上可用。应事先按业务代价确定少数类召回率、精确率或成本约束,并在独立测试数据上做最终判断。不要看完留出分数再把门槛调到刚好通过,也不要反复用最终测试集挑参数。

若类样本太少导致分层划分失败,应调整数据收集或评估设计,不应去掉报错后假装比较成立。若出现缺失值、候选模型训练失败或收敛警告,应在任务中保留失败或警告状态,修正数据与参数后重新评估;不能用零分覆盖异常,让自动报告无法区分“模型差”和“任务没完成”。
把基线作为每次评估的固定附件
每次任务保存数据版本、划分标识、依赖版本、策略、指标和失败原因。只发送汇总变化及记录位置给负责评估的人,避免通知中带入原始样本。自动触发可以来自数据版本更新或模型候选提交,但应使用同一套比较定义,不能每次临时改变评分标准。
DummyClassifier 需要标准化吗?它不利用特征值,不需要为了基线额外学习缩放参数;候选模型所需的预处理仍必须只在训练侧拟合。
为什么 prior 与 most_frequent 的准确率一样?两者类别预测都采用训练多数类;差别主要在概率输出,概率评估时不能忽略。
一次划分就足够吗?最小例子只展示接口。实际任务需要与时间、分组和样本量相匹配的重复评估或交叉验证设计,并将基线放进每个相同训练与评估划分中。
基线的价值是给复杂模型一个透明参照。保留相同划分、相同指标和明确失败状态,才能判断增加训练成本是否换来了可解释的改善。
Inkscape 怎样把文字转换为路径以避免字体缺失
- 上一篇
- Inkscape 怎样把文字转换为路径以避免字体缺失
- 下一篇
- scikit-learn ColumnTransformer 怎样让数值与类别特征分别预处理
-
- 科技周边 · 人工智能 | 58分钟前 | API · 人工智能 · vLLM max_tokens 推理服务
- vLLM 怎样为在线服务设置请求最大 Token 数
- 326浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 | 人工智能 · 评估指标 MLFlow 模型版本 Model Registry 机器学习实验
- MLflow 怎样记录模型版本和评估指标
- 313浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 | 人工智能 · Profiling ONNX Runtime 算子耗时 推理性能 JSON trace
- ONNX Runtime 怎样生成算子级延迟 profiling JSON
- 178浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 |
- LlamaIndex 怎样把元数据加入向量检索过滤
- 334浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 |
- LangChain 怎样为工具调用保留中间消息
- 450浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 | 自定义词表 tokenizer Hugging Face Tokenizers tokenizer.json
- Hugging Face Tokenizers 怎样保存自定义词表
- 311浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 | Transformers bitsandbytes BitsAndBytesConfig 4bit量化
- BitsAndBytesConfig 怎样查看 4bit 量化参数
- 205浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 | 缓存 · snapshot_download Hugging Face Hub hf_hub_download revision
- Hugging Face Hub 怎样下载指定提交版本的模型文件
- 415浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 |
- Hugging Face Hub 怎样为私有模型配置访问令牌
- 127浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 |
- OpenAI API 流式响应怎样按事件类型更新界面
- 228浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 |
- scikit-learn ColumnTransformer 怎样让数值与类别特征分别预处理
- 459浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 764次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 760次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 842次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 813次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 641次使用
-
- 量化模型本地推理的显存估算方法
- 2026-10-17 501浏览
-
- 本地大模型反复输出同一句话怎么调整生成参数
- 2026-09-06 501浏览
-
- Python 调用大模型时如何用结构化输出校验 JSON:从解析失败到可重试
- 2026-08-29 501浏览
-
- AI写作工具免费版安装教程(含豆包Clawdbot)
- 2026-05-30 501浏览
-
- WPS AI能自动生成PPT吗?输入主题一键制作演示文稿
- 2026-05-27 501浏览

