
直接打开MATLAB干就完了。今天这篇不整虚的就讲一件事怎么用二十来行代码把多元线性回归从数据读取到模型训练再到预测评估一条龙跑完。你手里只要有一份Excel表格哪怕之前没碰过MATLAB照着抄也能出结果。我在实际项目里发现一个规律很多同学学机器学习一上来就上Python、上深度学习结果被环境配置、依赖安装、CUDA版本搞得头破血流。但遇到业务里最常见的那类问题——比如根据温度、湿度、风速预测用电量根据广告投放金额、渠道、频次预测销售额——这种典型的多元线性回归场景MATLAB反而是最顺手的工具。它不需要你额外装什么包自带工具箱就把数据读取、模型训练、结果可视化全包了尤其适合毕业设计、课程实验、日常数据分析这种“我要结果但不是来写框架”的需求。这篇文章适合三类人一是正在做课程设计或毕业论文、需要快速出一个回归模型的学生二是工作里经常处理Excel报表、想给数据加一层预测能力的业务分析岗三是在Python和MATLAB之间反复横跳、想找个更省事的回归方案的研究者。我会把数据格式要求、代码逐行含义、结果怎么解读、踩过的坑全部写清楚你跟着跑一遍基本就能自己上手了。1. 为什么选MATLAB做多元线性回归思路与方案解读1.1 多元线性回归到底在解决什么问题先对齐一下概念。多元线性回归Multiple Linear Regression描述的是因变量y和多个自变量x1、x2、……、xn之间的线性关系数学形式是y b0 b1x1 b2x2 …… bn*xn ε这里面b0是截距b1到bn是各个自变量的回归系数ε是误差项。你要做的事情就是根据已有的历史数据估计出这一组b值让预测值和真实值之间的误差尽可能小。估计的方法叫最小二乘法OLS它的思路很直白找到一组系数让所有样本的残差平方和最小。很多同学第一次接触这个概念觉得抽象我打个比方。你请客吃饭想知道最终账单金额能被什么因素解释。你记录每次聚餐的人数、菜品数量、酒水档次、餐厅等级然后把账单金额也记下来。回归模型做的事情就是告诉你“人数每增加一个账单平均上涨55块”“酒水档次升一级账单平均上涨120块”这些东西组合起来就能比较准确地估算一顿饭大概花多少钱。预测本质上就是把已知的规律外推到新样本上。使用场景在我接触过的项目里非常广。电商公司用点击量、转化率、客单价预测GMV制造企业用温度、压力、转速预测设备寿命金融机构用收入、负债、征信评分预测违约概率气象领域用湿度、气压、云量预测降雨量。这些场景的数据结构高度统一一张表若干列特征一列目标值。只要符合这个结构下面这套代码就能直接套用。1.2 对比Python、SPSS、Excel自带分析工具优势在哪做回归分析不是只有MATLAB一条路我三个主流方案都深度用过说说我的真实感受。Pythonsklearn路子最野生态最丰富但代价是你得先过几道坎装Anaconda或者Python环境、处理依赖版本冲突、手写数据预处理流水线、还得自己写绘图代码。有个CSDN热榜问题叫“matlab编程csdn”下面大量回复都是在吐槽环境安装的人在配置文件面前跪了一晚上模型代码反而半小时就写完了这种亏我吃过不止一次。SPSS是老牌统计分析软件菜单操作确实省心点两下就能出回归结果适合纯分析场景。但它的短板在于自动化能力差你想批量处理10个Excel文件就傻眼了想把这个流程固化下来做成一个可复用的工具菜单操作根本做不到。另一个问题是它对数据格式要求比较死稍微复杂一点的清整逻辑就得借助语法窗口那就绕回编程路了。Excel自带的数据分析工具库估计大家更熟悉加载分析工具库之后可以做回归但它的问题更明显最多能处理15个自变量再往上会报错且不区分训练集和测试集无法评估模型在未知数据上的泛化表现。换句话说你用Excel算回归更多是“拟合历史数据”而不是“预测未来”这俩概念有本质区别。MATLAB在这三者里的定位很讨巧它保留了一部分菜单式操作用table、fitlm这类高层函数又有完整的编程能力做批量化和自动化既是计算引擎又是数据分析平台。更重要的是fitlm这个函数本身就是为回归统计设计的输出结果里包含了T检验、F检验、p值、置信区间、残差统计这些做统计分析必需的内容什么都有。Python sklearn的LinearRegression返回的对象里你要手动算这些指标代码量又上去了。1.3 20行代码“足够用”的边界在哪里先说清楚我这里说的20行指的是“最小可用版本”读取Excel、准备数据、划分集、训练模型、预测、输出评估指标。这确实是够用的能覆盖日常80%的回归预测需求。但如果你想做严格意义上的模型上线、部署到生产环境那还需要额外的东西特征工程的反复迭代、交叉验证寻参、多重共线性诊断、残差正态性检验、异常值稳健处理。这些我在后面的“常见问题”和“精进方向”里都会提到你可以按需加码。20行这个数字背后其实是一个工程原则先跑通再优化。我见过太多人一开始就想着把模型做得很复杂结果数据还没读进来卡在环境上最后放弃。先把全流程通起来看到预测结果建立正反馈再逐步加东西这才是学习曲线最平滑的路径。2. 动手前的准备Excel数据格式与预处理2.1 Excel数据该长什么样在你的Excel表格中数据格式要求非常简单第一行是变量名从第二行开始是数据每一列是一个变量其中一列是因变量你要预测的目标其余列是自变量用来预测的特征。我建议的摆放方式是自变量连续放在左边的若干列因变量单独放最后一列。这样代码里可以用data{:, 1:end-1}取全部自变量用data{:, end}取因变量写得干净又不容易出错。拿一个我实际用过的场景举例。某水果批发商想预测每日销售额采集了以下字段当日气温℃、降雨量mm、客流人数人、打折商品数量个、进货成本元、销售额元。这个表放到Excel里就是一个6列的表格前5列是影响因子最后一列是销售额。表头分别命名为temperature、rain、traffic、discount、cost、sales这种英文字段。有一点要特别留意Excel里同一列不要混存文本和数字。比如客流人数这一列如果某几天你写的是“约300人”这种文本readtable读取的时候整列会变成cell类型后面的数值运算直接崩掉。数据里出现这种情况在Excel里先清理成纯数字再导入这是老手才懂的坑。另外空单元格会被解析为NaN少量空值模型还能勉强跑但如果空值很多建议先用Excel的筛选功能或者MATLAB里的rmmissing函数处理。2.2 MATLAB读取Excel的方法与路径问题如果你用的是R2019a及之后的版本读Excel最推荐readtable函数data readtable(sales_data.xlsx);这行命令会自动识别表头、各列数据类型把Excel内容读成一个表格table对象。table是MATLAB里处理表格型数据的最佳结构它的好处在于每列可以保持自己的数据类型数字是数字、文本是文本还自带变量名不会像普通矩阵那样强制统一类型。文件路径是新手踩坑重灾区。readtable的默认查找路径是MATLAB的当前工作目录Current Folder。如果你的xlsx文件放在桌面或下载文件夹最好把文件复制到MATLAB当前文件夹里或者直接用完整路径。比如data readtable(C:\Users\myname\Desktop\sales_data.xlsx);注意Windows路径里的反斜杠要么写成两个反斜杠\要么把单反斜杠改成/正斜杠两种写法都能识别data readtable(C:/Users/myname/Desktop/sales_data.xlsx);我在CSDN上经常看到有人问“matlab movefile”怎么用实际遇到的问题是文件路径找不到。这里给一个非常实用的自查技巧在运行之前先执行这个命令确认当前文件夹和目标文件是否匹配pwd % 查看当前工作目录 dir(*.xlsx) % 列出当前目录下所有的Excel文件如果命令窗口显示的路径和文件实际位置不一致用cd命令切换目录或者用上边讲的全路径读取问题立刻解决。2.3 关于数据标准化的一个关键取舍在多元回归里如果各个自变量的量纲差异很大比如气温是两位数客流量是几千人打折商品是个位数要不要做标准化这是一个绕不开的问题。先澄清一个误解。很多人以为必须标准化之后才能做回归其实不是。线性回归的系数本身就能解释量纲差异——客流量的系数会很小气温的系数会大一些数学上完全能处理。不做标准化系数直接反映“自变量每变化一个单位因变量变化多少”这种解释性反而更强。但做标准化有一个实打实的好处当自变量之间相关性很强的时候量纲差异会放大数值稳定性问题导致系数估计波动剧烈。另外如果你后续要加正则化项岭回归、Lasso那标准化就是必须的。还有你想对比各特征对因变量的相对重要性时标准化后的系数大小才有横向可比性。我的建议是如果你的目的就是一般的预测且打算保持可解释性可以不做标准化如果你担心多重共线性或者要对比特征重要性就做标准化。在MATLAB里标准化一行搞定X normalize(X, zscore); % 把X的每一列转成均值0、标准差1的分布更保守一点的做法是先用corrcoef(data{:,:})看一下相关矩阵判断自变量之间的相关性再决定是否标准化。别盲目操作先看清数据再说。3. 核心代码逐行拆解从Excel到预测结果3.1 先看全貌完整代码就在这下面是完整代码我保证在最新的MATLAB版本R2021a及之后里直接复制粘贴就能运行。如果你用的是旧版本个别函数可能需要替换我在后面会专门讲。% 20行代码搞定多元线性回归预测 clear; clc; data readtable(sales_data.xlsx); % 第1行数据读取 X data{:, 1:end-1}; % 第2行提取自变量 y data{:, end}; % 第3行提取因变量 rng(42); % 第4行固定随机种子 cv cvpartition(height(data), HoldOut, 0.3); % 第5行划分训练测试集 X_train X(training(cv), :); % 第6行训练集自变量 X_test X(test(cv), :); % 第7行测试集自变量 y_train y(training(cv)); % 第8行训练集因变量 y_test y(test(cv)); % 第9行测试集因变量 mdl fitlm(X_train, y_train); % 第10行训练回归模型 y_pred predict(mdl, X_test); % 第11行对测试集预测 RMSE sqrt(mean((y_test - y_pred).^2)); % 第12行计算均方根误差 SSE sum((y_test - y_pred).^2); % 第13行计算残差平方和 SST sum((y_test - mean(y_test)).^2); % 第14行计算总平方和 R2 1 - SSE / SST; % 第15行计算R方 fprintf(R2 %.4f\nRMSE %.4f\n, R2, RMSE); % 第16行打印评估结果 disp(mdl); % 第17行显示完整回归结果数一数正好17行核心代码加上几个空行也就20行左右跟标题对得上。这段代码执行完你会得到两个关键输出一个是模型摘要表包含所有自变量的系数、p值、统计显著性另一个是测试集上的R2和RMSE这两个数直接告诉你模型“预测未知数据”到底靠不靠谱。3.2 每一段代码在做什么前三行是数据入口。在第1行readtable读取Excel时我建议你观察一下命令窗口有没有警告信息特别是“将文本数据转换为数值”之类的提示。如果出现说明你的Excel里有些列并不是纯数值这是隐患。第2行、第3行用花括号{ }对table取数得到的是普通的数值矩阵方便后续交给矩阵运算函数处理。table的取数逻辑初学者容易懵记住一个规则用花括号取出来的是数值用圆括号取出来的是table子集这俩差别巨大。第4行rng(42)是设置随机数种子。为什么要这么做因为后面划分训练测试集是用随机抽样完成的没有这行你每次运行划出来的结果都不一样模型评估指标会上下波动。加了这行每次跑代码结果完全一致方便你复现和调试。数字42随便选42是“银河系漫游指南”里的生命、宇宙以及一切的答案我用习惯了。第5行cvpartition是划分数据集的核心。HoldOut, 0.3的含义是随机抽30%的数据作为测试集剩下70%作为训练集。这个比例是比较常见的默认配置数据量在100左右的时候训练集70个样本足够拟合出稳定的回归系数。如果你的数据量很大1000可以考虑把比例调整为0.2让训练集占比更大如果数据很少50以下建议改成0.2否则测试集样本太少评估指标波动很大。第10行是整段代码的灵魂。fitlm(X_train, y_train)会在训练数据上做最小二乘拟合函数内部完成了矩阵求解、假设检验、以及回归统计量的计算。fitlm的全称是fit linear model它虽然是高层函数但并不意味着精度打折底层用的还是经典的\运算和正规方程求解结果跟手动计算完全一致。第11行之后是评估。先predict出测试集的预测值然后手写RMSE、R2的计算公式这样做比直接用mse(Model, X_test, y_test)这种封装函数更直观你看到的是原汁原味的数学定义。RMSE的含义是预测值和真实值的平均偏差幅度单位跟因变量一致R2的含义是模型解释了因变量变异的百分比0.9以上说明模型的解释能力很强。3.3 fitlm输出的那张表怎么看disp(mdl)输出的是一个回归摘要表格这是整个分析里信息密度最高的地方也是很多新手懵掉的地方。我挑重点讲。表格中间是“Coefficients系数”部分四列分别是Estimate系数估计值、SE标准误、tStatt统计量、pValuep值。系数估计值就是b0、b1、b2这一串表示了每个自变量对因变量的边际影响。比如sales 2000 8.5temperature 32traffic意思是气温每升1度销售额平均涨8.5元客流量每多1人销售额平均涨32元。p值是你判断这个变量“到底有没有用”的关键依据。以0.05为阈值p值小于0.05说明该特征对因变量有统计学上显著的影响保留它是合理的p值大于0.05说明这个变量提供的信息有限可以考虑剔除后重新建模。但要注意p值受样本量影响很大样本多的时候很小的无关变量也会显著样本少的时候真正有用的变量也可能不显著所以它是参考不是裁决。表格下方“Number of observations”是样本数量“Error degrees of freedom”是残差自由度等于观测数减去参数个数。右下角“Root Mean Squared Error”是训练集上的RMSE这个值跟后面你在测试集上算的RMSE通常不一样——训练集RMSE一般偏小这是正常的不是代码写错了。我还建议你顺带看一眼“R-squared”和“Adjusted R-squared”这两个数通常在表格右上方。调整后的R2会惩罚多余的自变量所以如果加了无用特征Adjusted R2会明显低于R2。看到这种情况就该考虑删特征了。4. 实操全流程记录从零到预测结果4.1 完整操作步骤新手照做版我按一个从没接触过MATLAB的小白视角把整个操作流程梳理一遍你跟着走就行。第一步准备Excel数据。把它命名为sales_data.xlsx放在一个你记得住的目录下推荐直接放MATLAB当前文件夹。Excel列顺序前面放自变量最后一列放因变量第一行写英文变量名。第二步打开MATLAB。界面就一个命令行窗口这个窗口叫Command Window你之后输入的代码都会在这里执行。左上角的“当前文件夹”面板Current Folder会显示工作目录鼠标能直接看到文件是否在这个目录里。第三步在命令行里输入下面这行检查数据文件是否被识别dir(*.xlsx)如果列出了你的Excel文件名说明路径没问题可以进入下一步如果什么都没有尝试用cd命令切换目录比如cd(C:/Users/你的用户名/Desktop/)。第四步把核心代码逐行输入或者直接粘贴到命令行。也可以点击“新建脚本”按钮把代码写在一个.m文件里点“运行”按钮一次跑完。脚本方式更方便因为以后改参数、重复运行不用重新输入。第五步观察输出。命令窗口会打印R2和RMSE然后弹出完整的回归摘要表格。看到这些整个流程就成功了。4.2 用真实数据演示一遍效果我模拟一组数据让大家直观感受输出长什么样。假设有300个样本特征包含广告费用X1、客流量X2、促销折扣X3因变量是日销售额Y。用上面代码训练后典型的输出是R2 0.8735 RMSE 452.1837然后disp(mdl)的那个表大致这样变量EstimateSEtStatpValue截距128.5475.211.710.088X112.842.515.060.001X23.821.133.380.004X3-25.678.42-3.050.013怎么解读截距的p值0.088大于0.05说明常数项在统计上不显著但这不影响模型整体使用一般也不建议随便去掉截距。X1系数12.84意味着每多投1元广告销售额平均多12.84元X3系数为负说明折扣力度加大反而可能压低销售额——这在某些品牌定位偏高端的产品里是真实的现象折扣多了消费者会怀疑品质。R2为0.87说明这三个因素能解释87%的销售额波动预测精度RMSE约452元看你的业务体量决定这个误差能不能接受。一定要区分“训练集效果”和“测试集效果”。只有测试集上算出来的R2、RMSE才是模型真实预测能力的反映训练集上的数值再好看都有自欺欺人的成分。变量的量纲直接影响系数大小别拿系数直接比重要性。广告费用的系数看起来比客流量小但广告费用本身数值就大标准化之后才是可比口径。因变量和自变量的关系如果不是线性的拟合效果会远差于预期。先用scatter画出每个自变量和因变量的散点图看到曲线关系要加平方项或做变换。4.3 对新数据做预测的扩展操作模型训练好了怎么用来预测新一批数据这是“预测”这两个字的落点。假设你拿到下个月的天气预测和广告排期想知道销售额大概多少你只需要把新数据整理成跟训练数据同样的列结构然后调用predict函数。new_data readtable(new_data.xlsx); % 新数据同样结构 X_new new_data{:, 1:end-1}; % 提取自变量 y_hat predict(mdl, X_new); % 输出预测值predict会把你新样本的自变量代入模型公式自动算出预测值。这个操作非常简单但有一个细节必须注意训练模型时做过的任何预处理比如标准化、缺失值填充新数据也要走一模一样的流程。比如你在训练前对X做了normalize那新数据的X也要用训练集计算出的均值和标准差去做标准化不能直接对整个新数据重新normalize——否则两个数据不在同一分布空间里预测就是错的。如果想把预测结果写回Excel用writetable就行result table(y_hat); writetable(result, prediction_result.xlsx);这样一个完整的数据导入、训练、预测、导出的闭环就形成了。你完全可以把它封装成一个只有参数输入输出的脚本以后换一份数据就能直接跑。5. 常见问题与排查技巧实录5.1 模型效果差、R2等于甚至小于0怎么回事这几乎是我被问得最多的问题。先说一个最容易被忽视的细节R2的定义是1减去SSE除以SST如果你的预测结果比直接用测试集平均值还离谱SSE大于SSTR2就是负数。这种情况出现通常不是代码坏了而是模型的线性假设跟数据的实际分布根本不匹配。我建议先画图看看scatter(y_test, y_pred)然后把yx这条参考线画上去如果点不是沿着对角线分布而是乱七八糟或者呈弧线分布说明要么漏了关键自变量要么关系是非线性的。处理办法有两种。第一种是加交互项和多项式项把模型升级为带二次项的回归fitlm支持用公式语法表示mdl2 fitlm(X_train, y_train, y ~ x1 x2 x3 x1:x2 x2^2);这里的x1:x2表示x1和x2的交互作用x2^2表示x2的二次项。这种扩展能让模型捕捉一些弯曲关系但注意别加太多项否则会过拟合。第二种是干脆换模型比如决策树、随机森林、高斯过程回归MATLAB里都有现成函数比如fitrtree、fitrensemble。这些模型能自动捕捉非线性关系但可解释性比线性回归差很多属于取舍问题。5.2 readtable读Excel报错、列名乱码怎么办读Excel失败是高频问题。最常见的一种情况是readtable读出来之后中文列名在命令窗口显示乱码或者部分文本列读出来是“????”。这通常是编码问题Excel文件保存时用了不同的字符编码MATLAB的默认读取设置没对齐。老一点的MATLAB版本比如R2023a之前对UTF-8的支持不够好中文变量名读出来会乱码。解决办法很粗暴但有效把Excel另存为CSV文件UTF-8编码然后用readmatrix或者readtable读CSVdata readtable(sales_data.csv, PreserveVariableNames, true);如果你不想转CSV另一个办法是干脆避免表头用中文Excel第一行全部改成英文字段名或者拼音字段名。这个土办法我在很多项目里都用了省事且兼容性最好。另外readtable遇到Excel里某个单元格是数字和文本混合的会自动把整列识别为文本类型这在计算时是灾难。排查方法很直接readtable之后在命令行输入summary(data)这个命令会告诉你每一列的类型double、cell、string等。发现哪一列类型不对回到Excel里把那列的文本单元格改成数值格式再重新读这是最保险的做法。5.3 老版本MATLAB没有normalize、cvpartition怎么办版本兼容性是个现实问题。如果你用的是R2017a或者更早的版本normalize函数可能不存在。替代方案是手写标准化逻辑就三行mu_x mean(X, 1); sigma_x std(X, 0, 1); X (X - mu_x) ./ sigma_x;cvpartition虽然很早就有了R2008a之前的版本也有但旧版本的参数名可能略有差异。如果你发现cvpartition用不了就用randperm手写划分逻辑rng(42); idx randperm(size(X,1)); train_idx idx(1:round(0.7*size(X,1))); test_idx idx(round(0.7*size(X,1))1:end); X_train X(train_idx, :); X_test X(test_idx, :); y_train y(train_idx); y_test y(test_idx);这个手写版本的思路和cvpartition完全一样随机打乱索引取前70%做训练集后30%做测试集。写法还显得更透明我更推荐初学者先理解这个版本再跳回封装的函数。如果你下载的是别人打包的所谓“matlab安装包”又装不上我这里给个折中建议MATLAB的在线网页版官方提供的基础版对于跑这种回归绰绰有余不需要本地安装。但企业项目涉及敏感数据的时候还是老老实实用本地版。5.4 特征太多模型“失效”了怎么办当自变量数量很多比如几十个、上百个时直接上fitlm常常会出两个问题一是多重共线性导致某些系数估计的符号和直觉相反二是模型把噪音也学进去测试集表现崩溃。这里的核心是特征选择问题。先用一个快速的诊断方法检查各特征之间的相关系数矩阵。C corrcoef(X); % 找出相关系数绝对值大于0.7的特征对 [row, col] find(abs(C) 0.7 abs(C) 1);如果发现有高度相关的特征对建议删掉其中一个保留那个和你业务理解关系更紧密的。比如温度和体感温度高度相关那留哪个取决于你更容易拿到哪个数据。其次是考虑用逐步回归MATLAB的stepwiselm函数就是专门做这个的它会自动从零开始加变量每次加入一个对模型贡献最大的变量去掉一个不显著的变量mdl_step stepwiselm(X_train, y_train);这个函数输出里会显示每一步是“加入”还是“移除”哪个变量全部跑完你就得到一个人工智能帮你选完特征的最优模型。业务上如果实在不想纠结特征取舍可以直接用这个方案它能帮你节省大量时间。最后如果特征数量爆炸性多就该考虑正则化回归了MATLAB里用lassoglm或者ridge函数。这是我目前处理大数据量特征时最常用的手段原理是牺牲一点训练集精度来换取更稳定的系数估计和更好的泛化效果。这一块如果需要我单独写一篇后续的呼声高我就展开。6. 踩坑总结与个人经验谈6.1 我测试了几百份数据之后得出的三个血泪经验第一个经验永远要检查测试结果里有没有异常点。有一回我拿到一份广告投放数据回归模型跑出来R2高达0.98开心得不行后来画残差图发现有一个样本点的残差比其他点大了两个数量级。一查原来是那份Excel里有一行数据录入错误销售额少写了一个零。这一条异常样本把整个回归系数都给拉偏了我要是没检查图就直接用系数去决策后果不堪设想。所以规范流程是训练完之后马上画残差图plotResiduals(mdl, fitted);如果残差分布呈现喇叭状左边小右边大说明方差非齐性线性模型的基本假设被破坏结果不可靠。第二个经验数据预处理的时间通常是建模时间的十倍以上。很多初学者恨不得把20%的精力花在调模型上但真实项目的瓶颈全在数据上。缺值、异常值、量纲不统一、单位错误每一关都得过。我在做数据导入之前一定会先执行一次summary(data)和corrcoef这两步看清楚数据质量再建模基本能避开80%的坑。第三个经验模型的可解释性永远是第一位的。学术界喜欢看谁预测得更准但业务上往往更看重“我该往哪个方向使劲”。线性回归能告诉你“客流量每增加100人销售额增加300元”随机森林不能。所以即便我有各种花哨的算法工具只要是给业务方做决策支持我首选还是多元线性回归。这也是为什么我强烈建议你从线性回归入门机器学习。6.2 顺着这篇文章你还可以做哪些延伸文章里的代码是个起点顺着它你可以往很多方向延展。如果你想深化统计知识可以研究一下fitlm输出的全部字段比如置信区间coefCI、预测区间predict函数可以返回PredictionBounds这些能让你对不确定性有一个量化认知。如果你想把代码整理成可以复用的工具可以把读Excel、训练、评估三个环节打包成一个函数function [mdl, metrics] myRegression(xlsxFile, targetCol) data readtable(xlsxFile); X data{:, [1:targetCol-1, targetCol1:end]}; y data{:, targetCol}; % ... 后面训练和评估的逻辑 end然后调用一次就出结果以后处理同类问题连代码都不用改只换文件名。如果你还想把模型部署成给别人用的工具MATLAB Compiler可以把脚本打包成独立程序对方电脑上不用装MATLAB也能运行暑假实习的时候这个技能点非常加分。我个人在实际操作中的体会是多元线性回归这件事难点从来不在模型本身而在于你愿不愿意花时间把数据整理干净、把结果放在业务语境里去解读。你把这套流程跑通、跑熟往后学任何更复杂的模型都只是在这个基础上换个函数名、加几行参数的事。赶紧开MATLAB吧代码在上边摆着跑起来就赢了。