代码如下:
% 导入数据
data = readtable('data.xlsx');
% 假设最后一列是目标值,前面列为特征
X = data{:, 1:end-1}; % 特征
y = data{:, end}; % 目标值
% 划分训练集和测试集
cv = cvpartition(height(data), 'HoldOut', 0.2);
XTrain = X(training(cv), :);
yTrain = y(training(cv), :);
XTest = X(test(cv), :);
yTest = y(test(cv), :);
% 创建XGBoost模型(回归任务)
model = fitrensemble(XTrain, yTrain, 'Method', 'Bag'); % 使用回归任务的fitrensemble
% 进行预测
yPred = predict(model, XTest);
% 可视化结果
figure;
scatter(yTest, yPred);
hold on;
plot([min(yTest), max(yTest)], [min(yTest), max(yTest)], 'r--');
xlabel('真实值');
ylabel('预测值');
title('真实值与预测值比较');
grid on;
% 计算评估指标
mse = mean((yTest - yPred).^2);
rmse = sqrt(mse);
mae = mean(abs(yTest - yPred));
r2 = 1 - sum((yTest - yPred).^2) / sum((yTest - mean(yTest)).^2);
% 显示评估结果
fprintf('均方误差 (MSE): %.4f\n', mse);
fprintf('均方根误差 (RMSE): %.4f\n', rmse);
fprintf('平均绝对误差 (MAE): %.4f\n', mae);
fprintf('决定系数 (R^2): %.4f\n', r2);
结果如下:
均方误差 (MSE): 17.2614
均方根误差 (RMSE): 4.1547
平均绝对误差 (MAE): 3.5448
决定系数 (R^2): 0.7518