DummyRegressor 是用于建立回归任务基线的工具,通过忽略特征仅输出固定值(如均值、中位数等)来验证模型是否真正学习而非依赖数据分布;适用于初建模、检测数据泄露、评估特征工程及多目标基准对比。

DummyRegressor 不是用来替代真实模型的,而是用来确认你的模型真正在学习,而不是靠数据本身分布“蒙对”了。
什么时候该用 DummyRegressor?
当你刚拿到一个回归任务、还没训练任何模型时,先跑一个 DummyRegressor 是最便宜的 baseline。它不看特征,只按策略输出固定值(比如所有预测都等于训练集均值),帮你快速判断后续模型有没有提升空间。
- 验证数据泄露或评估流程是否合理:如果你的模型比
DummyRegressor还差,说明 pipeline 有问题 - 调试特征工程效果:改完特征后,对比新模型 vs
DummyRegressor的score()变化,比单纯看绝对分数更可靠 - 多目标或多输出回归中,每个目标单独建 dummy 基准,避免某维“拖后腿”影响整体判断
DummyRegressor 的几种策略怎么选?
策略由 strategy 参数控制,不同场景下推荐不同:
-
strategy="mean":默认,输出训练标签的均值。适合标签分布较集中、无明显偏态的情况 -
strategy="median":对异常值鲁棒,尤其当标签有长尾或离群点时,比"mean"更稳 -
strategy="quantile":需配合quantile=0.5(等价于 median)或其它分位数;注意它只支持单输出,且quantile必须在 0–1 之间 -
strategy="constant":必须指定constant参数,比如constant=42;常用于模拟业务规则兜底值,或做 A/B 测试对照组
别用 "most_frequent"——那是 DummyClassifier 的,DummyRegressor 不支持。
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
立即学习“Python免费学习笔记(深入)”;
训练和评估时容易漏掉的关键点
DummyRegressor 看似简单,但实操中几个细节直接影响 baseline 可信度:
- 必须用
.fit(X_train, y_train)再调.predict(X_test),不能跳过fit——它需要从y_train中计算统计量 -
score()返回的是 R² 分数,不是 MSE 或 MAE;想对比误差指标,得手动算:mean_squared_error(y_test, y_pred) - 如果用了交叉验证(如
cross_val_score),DummyRegressor每折都会重新基于当前 fold 的y_train计算均值/中位数,结果比全局 baseline 更保守,也更真实 - 特征
X在fit和predict时形状必须一致,哪怕它完全被忽略——传入空数组或全零矩阵会报ValueError: Found array with 0 sample(s)
一个最小可运行示例
不用抄完整项目,几行就能验证 baseline 是否生效:
from sklearn.dummy import DummyRegressor
from sklearn.metrics import r2_score
import numpy as np
<p>X_train, X_test = np.random.randn(100, 5), np.random.randn(20, 5)
y_train, y_test = np.random.randn(100), np.random.randn(20)</p><p>dummy = DummyRegressor(strategy="median")
dummy.fit(X_train, y_train) # 必须调用
y_pred = dummy.predict(X_test)</p><p>print("R²:", dummy.score(X_test, y_test)) # 输出接近 0,正常
print("MSE:", np.mean((y_test - y_pred) ** 2))注意 dummy.score() 的第二个参数是真实标签,不是预测值——这个顺序和 sklearn.metrics 函数相反,容易写反。

















