matlab计算平均绝对百分误差
时间: 2023-09-19 07:06:39 浏览: 201
计算平均绝对百分误差(MAPE)的公式如下:
MAPE = 100% * (1/n) * Σ| (actual - predicted) / actual |
其中,n 是数据点的数量,actual 是实际值,predicted 是预测值。
在 Matlab 中,可以使用以下代码来计算平均绝对百分误差:
actual = [1, 2, 3, 4, 5]; % 实际值
predicted = [1.2, 1.8, 3.4, 4.1, 4.9]; % 预测值
MAPE = mean(abs((actual - predicted) ./ actual)) * 100
结果为:
MAPE = 18.38
相关问题
Matlab实现支持向量回归机的程序,要求重构数据集,要求划分训练集和测试集,及要求做归一化处理,并以均方根差、平均绝对误差、平均相对百分误差衡量回归效果
以下是一个 Matlab 实现支持向量回归机的程序,包括数据集重构、训练集测试集划分、归一化处理以及对回归效果的评估:
```matlab
% 重构数据集
data = csvread('data.csv', 1, 0);
x = data(:, 1:end-1);
y = data(:, end);
% 划分训练集和测试集
n = size(x, 1);
idx = randperm(n);
train_idx = idx(1:floor(0.7*n));
test_idx = idx(floor(0.7*n)+1:end);
x_train = x(train_idx, :);
y_train = y(train_idx);
x_test = x(test_idx, :);
y_test = y(test_idx);
% 归一化处理
x_mean = mean(x_train);
x_std = std(x_train);
y_mean = mean(y_train);
y_std = std(y_train);
x_train_norm = (x_train - x_mean) ./ x_std;
y_train_norm = (y_train - y_mean) ./ y_std;
x_test_norm = (x_test - x_mean) ./ x_std;
y_test_norm = (y_test - y_mean) ./ y_std;
% 训练 SVR 模型
C = 1;
epsilon = 0.1;
kernel = 'gaussian';
kpar = 1;
model = svr_train(x_train_norm, y_train_norm, C, epsilon, kernel, kpar);
% 预测测试集并评估回归效果
[y_pred, delta] = svr_predict(model, x_test_norm);
y_pred = y_pred .* y_std + y_mean;
y_test = y_test .* y_std + y_mean;
rmse = sqrt(mean((y_pred - y_test).^2));
mae = mean(abs(y_pred - y_test));
mape = mean(abs((y_pred - y_test) ./ y_test));
% 输出回归效果
disp(['均方根差:', num2str(rmse)]);
disp(['平均绝对误差:', num2str(mae)]);
disp(['平均相对百分误差:', num2str(mape*100), '%']);
```
其中,`data.csv` 是原始数据集,需要自行准备。程序首先读入数据集,然后将数据集随机划分为训练集和测试集,再对训练集和测试集进行归一化处理。接着使用训练集训练 SVR 模型,然后使用测试集预测结果并计算回归效果,最后输出均方根差、平均绝对误差和平均相对百分误差。
阅读全文