You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中多回归器留一法交叉验证脚本扩展及RSQ表格输出需求

多元回归留一法交叉验证(3个回归器)脚本修正与扩展

以下是适配3个回归器的MATLAB脚本,同时实现了预测结果与RSQ值的表格化输出:

clc
clear all
close all
warning off

% 读取数据集:假设前3列为回归器,第4列为因变量,可根据实际列顺序调整
data = readtable('Leave_One_Out.csv');
X = table2array(data(:, 1:3))'; % 3个回归器,转置后每行对应一个特征,每列对应一个样本
y = table2array(data(:, 4))';
n = length(y);
predictions = zeros(1, n); % 预分配内存提升效率

for p = 1:n
    % 留一法划分训练/测试集
    train_idx = setdiff(1:n, p);
    test_idx = p;
    
    X_train = X(:, train_idx);
    y_train = y(train_idx);
    X_test = X(:, test_idx);
    
    % 构建带截距项的设计矩阵,无需循环拼接
    design_matrix = [X_train', ones(n-1, 1)];
    
    % 求解多元回归系数
    coeffs = design_matrix \ y_train';
    
    % 预测测试样本
    y_pred = [X_test', 1] * coeffs;
    predictions(p) = y_pred;
end

% 计算整体RSQ值
residuals = y - predictions;
ss_res = sum(residuals.^2);
ss_tot = sum((y - mean(y)).^2);
rsq_overall = (1 - ss_res / ss_tot) * 100;

% 生成包含详细结果的表格
results_table = table((1:n)', y', predictions', residuals', ...
    'VariableNames', {'样本索引', '真实值y', '预测值', '残差'});

% 输出结果
disp('留一法交叉验证整体RSQ值(百分比):');
disp(rsq_overall);
disp(' ');
disp('详细预测结果表格:');
disp(results_table);

% 可选:将表格写入CSV文件保存
writetable(results_table, 'LOOCV_Results.csv');

关键改动说明

  • 多回归器适配:将单变量输入改为读取3列回归器数据,构建包含3个特征+截距项的设计矩阵,适配多元回归计算。
  • 修正原脚本错误:原脚本中Z为未定义变量,已替换为正确的特征变量X;同时移除低效的循环拼接设计矩阵逻辑,改用向量化操作。
  • 内存预分配:提前创建predictions数组替代动态拼接,大幅提升大样本量下的运行效率。
  • 表格化输出:用table函数生成包含样本索引、真实值、预测值、残差的结构化表格,同时计算并输出整体RSQ值,结果更直观。

自定义调整提示

如果你的数据集列顺序不同,只需修改data(:, 1:3)和data(:, 4)的索引即可。例如若因变量是第2列,三个回归器是第1、3、4列,可改为:

X = table2array(data(:, [1, 3, 4]))';
y = table2array(data(:, 2))';

内容的提问来源于stack exchange,提问作者kev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:15:36