尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

MATLAB中回归模型常用误差指标(MSE、RMSE、MAPE等)的实现方法

MATLAB中回归模型常用误差指标(MSE、RMSE、MAPE等)的实现方法
📅 发布时间:2026/6/19 8:55:03

一、核心误差指标实现

1. 均方误差(MSE)

数学公式:

MATLAB代码:

function mse = calculateMSE(y_true, y_pred)% 输入验证assert(isequal(size(y_true), size(y_pred)), '输入数据维度不一致');n = numel(y_true);mse = sum((y_true - y_pred).^2) / n;
end

2. 均方根误差(RMSE)

数学公式:

MATLAB代码:

function rmse = calculateRMSE(y_true, y_pred)% 调用MSE函数计算mse = calculateMSE(y_true, y_pred);rmse = sqrt(mse);
end

3. 平均绝对误差(MAE)

数学公式:

MATLAB代码:

function mae = calculateMAE(y_true, y_pred)% 输入验证assert(isequal(size(y_true), size(y_pred)), '输入数据维度不一致');mae = mean(abs(y_true - y_pred));
end

4. 平均绝对百分比误差(MAPE)

数学公式:

MATLAB代码(含零值保护):

function mape = calculateMAPE(y_true, y_pred)% 输入验证assert(isequal(size(y_true), size(y_pred)), '输入数据维度不一致');% 避免除零错误epsilon = 1e-10;safe_denominator = max(abs(y_true), epsilon);mape = 100 * mean(abs((y_true - y_pred)./safe_denominator));
end

二、综合误差计算工具箱

完整函数实现(支持批量处理):

function [MSE, RMSE, MAE, MAPE] = regressionMetrics(y_true, y_pred)% 输入验证assert(isequal(size(y_true), size(y_pred)), '输入数据维度不一致');% 计算基础指标n = numel(y_true);SSE = sum((y_true - y_pred).^2);  % 残差平方和% 输出指标MSE = SSE / n;RMSE = sqrt(MSE);MAE = mean(abs(y_true - y_pred));% MAPE计算(含零值保护)epsilon = 1e-10;safe_denominator = max(abs(y_true), epsilon);MAPE = 100 * mean(abs((y_true - y_pred)./safe_denominator));
end

三、使用示例

% 生成测试数据
y_true = [3, -0.5, 2, 7, 4.5]';
y_pred = [2.5, 0.0, 2, 8, 4.8]';% 调用函数计算
[MSE, RMSE, MAE, MAPE] = regressionMetrics(y_true, y_pred);% 输出结果
fprintf('MSE: %.4f\n', MSE);    % 输出: 0.3750
fprintf('RMSE: %.4f\n', RMSE);  % 输出: 0.6124
fprintf('MAE: %.4f\n', MAE);    % 输出: 0.5000
fprintf('MAPE: %.2f%%\n', MAPE);% 输出: 16.67%

四、高级功能扩展

1. 批量数据处理

% 多组数据计算(3D矩阵)
data_true = rand(10,5,100);  % 100组样本,每组10个特征5个样本
data_pred = rand(10,5,100);% 计算每组指标
MSE_matrix = zeros(size(data_true,3),1);
for i = 1:size(data_true,3)[~, ~, ~, MSE_matrix(i)] = regressionMetrics(data_true(:,:,i), data_pred(:,:,i));
end

2. 可视化工具

function plotErrors(y_true, y_pred)figure;subplot(2,1,1);plot(y_true, 'bo-', 'LineWidth',2); hold on;plot(y_pred, 'rx--', 'LineWidth',2);legend('真实值', '预测值');title('预测值对比');subplot(2,1,2);bar([MSE, RMSE, MAE, MAPE]);set(gca, 'XTickLabel', {'MSE','RMSE','MAE','MAPE'});ylabel('误差值');title('误差指标分布');
end

参考代码 误差计算,用于回归模型的MSE,RMSE,MAPE等常见误差计算 www.youwenfan.com/contentcnn/84836.html

五、注意事项

  1. 数据对齐 确保y_true和y_pred长度一致,建议使用assert(isequal(length(y_true), length(y_pred)))进行验证
  2. 异常值处理 MSE对异常值敏感,建议先进行数据清洗 MAE更适合存在离群值的场景
  3. 单位一致性 RMSE单位与原始数据一致,MAPE为百分比单位
  4. 零值保护 MAPE计算时需避免真实值为零的情况,可通过添加极小值epsilon解决

六、扩展指标(可选)

% 决定系数R²
function r2 = calculateR2(y_true, y_pred)ss_total = sum((y_true - mean(y_true)).^2);ss_residual = sum((y_true - y_pred).^2);r2 = 1 - (ss_residual/ss_total);
end% 对称MAPE(SMAPE)
function smape = calculateSMAPE(y_true, y_pred)numerator = abs(y_true - y_pred);denominator = (abs(y_true) + abs(y_pred))/2;smape = 100 * mean(numerator./denominator);
end

相关新闻

  • sqlserver 20008 R2 关闭TLS1.0无法启动服务的解决办法
  • 2025年热门的自动化系统防水微动开关/南网机构防水微动开关厂家最新推荐排行榜 - 行业平台推荐
  • 2025年热门的凹槽烤漆龙骨厂家最新TOP排行榜 - 品牌宣传支持者

最新新闻

  • 2026海淀名表回收实地探店|劳力士欧米茄出手实测,5家门店真实体验复盘 - 逸程
  • 2026年6月水质监测磁翻板液位计知名品牌排行榜:水处理场景适配性深度测评与选型指南 - 仪表品牌排行榜
  • GLM-5系列如何重塑AI编程的确定性与工程可靠性
  • 2026年6月汉中黄金回收六家门店测评实录 - 余生黄金回收
  • 武汉三新职业技术学校-学校介绍以及招生专业2026年 - 武汉中职最新信息发布
  • 沧州黄金回收市场实地测评:六家正规机构横向对比 - 余生黄金回收

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号