使用 MATLAB 进行 PLS 回归并计算 R2 和 RMSE

本指南将向您展示如何使用 MATLAB 进行偏最小二乘 (PLS) 回归,并计算相关系数 R2 和均方根误差 RMSE。该示例代码使用两个 Excel 文件读取数据,并提供逐步说明以帮助您完成此任务。

1. 读取数据

当数据存储在两个 Excel 文件中时,您可以使用 MATLAB 的 xlsread 函数读取数据。

2. 分割数据集

将数据分割为训练集和测试集,以便评估模型的性能。

3. 拟合 PLS 模型

使用 plsregress 函数拟合 PLS 模型。

4. 预测

使用拟合的 PLS 模型预测测试集的响应变量。

5. 计算 R2 和 RMSE

计算相关系数 R2 和均方根误差 RMSE 以评估模型的性能。

示例代码

clc; clear;

% 读取数据
x_data = xlsread('x_data.xlsx');
y_data = xlsread('y_data.xlsx');

% 分割数据集
train_ratio = 0.8; % 训练集比例
[trainInd, testInd] = crossvalind('HoldOut', size(x_data, 1), train_ratio);

x_train = x_data(trainInd, :);
y_train = y_data(trainInd, :);
x_test = x_data(testInd, :);
y_test = y_data(testInd, :);

% 拟合 PLS 模型
num_components = 5; % PLS 模型的成分数
pls_model = plsregress(x_train, y_train, num_components);

% 预测
y_pred = [ones(size(x_test, 1), 1) x_test] * pls_model;

% 计算 R2
SSR = sum((y_pred - mean(y_test)).^2);
SST = sum((y_test - mean(y_test)).^2);
R2 = 1 - SSR/SST;

% 计算 RMSE
RMSE = sqrt(mean((y_pred - y_test).^2));

% 显示结果
disp(['R2: ' num2str(R2)]);
disp(['RMSE: ' num2str(RMSE)]);

说明

  • x_data.xlsxy_data.xlsx 是存储数据的两个 Excel 文件。
  • train_ratio 是训练集的比例,在本例中为 80%。
  • num_components 是 PLS 模型的成分数。

请确保您的 Excel 文件 x_data.xlsxy_data.xlsx 存储了正确的数据,并且数据在不同的工作表或列中。如果需要,您可以根据实际情况在代码中进行相应的修改和处理。


原文地址: https://www.cveoy.top/t/topic/bRID 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录