讲师中心 微信公众号
AI工具推荐 视频效率加速

如何正确理解并计算非线性回归模型中的 R² 分数

千宇姑娘_7588

千宇姑娘_7588

发布时间:2026-01-18 11:33:17

|

923人浏览过

|

来源于php中文网

原创

如何正确理解并计算非线性回归模型中的 R² 分数

r² 分数并非恒为正值,当模型拟合效果比简单均值预测更差时,其值可为负数;本文详解 sklearn 中 `r2_score` 的计算逻辑、负值成因,并提供规范的非线性拟合与评估实践指南。

在使用 sklearn.metrics.r2_score 评估非线性回归模型(如您对 kc_house_data 构建的指数型函数 y = β₁·β₂ᵃ + β₃)时,出现负值(如 -59.51)并不表示代码错误,而是模型性能的客观反映。R² 的数学定义为:

[ R^2 = 1 - \frac{\sum_i (y_i - \hat{y}_i)^2}{\sum_i (y_i - \bar{y})^2} ]

其中分子是残差平方和(RSS),分母是总平方和(TSS),以目标变量均值 (\bar{y}) 为基准。关键在于:当 RSS > TSS 时,R² < 0——这意味着您的模型预测结果,整体上比直接用 y_data_norm 的均值进行“常数预测”还要糟糕。

在您的代码中,问题主要出现在以下环节:

AI舌诊面诊问诊医疗系统+诊疗商城系统源码
AI舌诊面诊问诊医疗系统+诊疗商城系统源码

AI 舌诊面诊问诊医疗系统 + 诊疗商城系统源码是一套结合 AI 辅助诊断与商品转化的健康类程序,基于浩创云、ThinkPHP(PHP)开发,支持微信服务号与 H5 端,适合做中医舌诊面诊问答、健康建议推送以及配套诊疗商品的运营。

下载
  1. 训练与预测范围不一致:您用 curve_fit 在归一化后的 x_data_norm 上拟合参数,但绘图时却用 x = np.linspace(4, 12, 21613) / max(x) 生成全新横坐标——该区间(4–12)远超 x_data_norm 实际范围([0, 1]),导致外推严重失真,y 预测值剧烈偏离真实分布;
  2. 评估对象错位:r2_score(y_data_norm, y) 中 y 是在错误 x 网格上计算的预测值(长度 21613),而 y_data_norm 长度为原始样本数(如 21613 可能巧合匹配,但逻辑错误),且未对应真实输入点;
  3. 未使用拟合后的最优参数进行 内插预测:应基于原始 x_data_norm 计算拟合值 y_pred = log(x_data_norm, *popt),再与 y_data_norm 对齐评估。

✅ 正确做法如下:

# 正确:在原始归一化输入上生成预测值
y_pred_norm = log(x_data_norm, *popt)  # 注意:x_data_norm 是训练输入

# 确保维度一致、一一对应
assert len(y_pred_norm) == len(y_data_norm)

# 计算 R² —— 此时若仍为负,说明模型结构或初始化严重不适配数据
r2 = r2_score(y_data_norm, y_pred_norm)
print(f"R²-score (on training points): {r2:.4f}")

⚠️ 补充注意事项:

  • R² < 0 提示模型存在根本性问题:函数形式不合理(如 log() 定义中 np.power(Beta_2, a) 对 a ∈ [0,1] 增长过缓)、初始参数偏差大、数据噪声高或特征工程失效(combined 特征可能淹没关键信号);
  • 对非线性回归,建议优先使用交叉验证下的 mean_squared_error 或 mean_absolute_error 辅助诊断;
  • 若追求解释性 R²,可考虑对数变换后线性化(如 log(price) ~ combined),再用线性 R² 评估;
  • 永远避免在未经对齐的 x 网格上评估指标——它衡量的是“绘图美观度”,而非模型泛化能力。

总结:R² 为负不是 bug,而是 red flag。它敦促我们回归建模本质——检查函数假设是否合理、数据预处理是否引入偏差、以及优化过程是否收敛到有意义解。在非线性场景中,可视化残差、检验 Jacobian 条件数、尝试不同初值或换用鲁棒优化器(如 method='trf'),往往比执着于 R² 数值更有价值。

热门AI工具

更多
VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

40

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

20

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

20

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

20

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

20

2026.10.22

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

20

2026.10.22

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

140

2026.10.22

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

20

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn