算法代码专题7:多元线性最小二乘疑问应用实例:房价预测
上篇(文章6算法代码讲座6:最小二乘法理论原理、典型案例与MATLAB实现)讲了最小二乘法,以弹簧的实验信息为背景问题,进行了最小二乘法的实践,其中自变量数据仅有一个因素,求解比较简单,本文进一步,针对自变量有多个因素,同时符合线性假设的最小二乘问题,举例演示。
1.介绍一个数据集
波斯顿房价材料集(Boston Housing Dataset)是一个经典的机器学习回归材料集,包含506个样本和13个特征变量,用于预测波士顿地区房屋(中位数)价格(MEDV)。主要特征变量包括:
CRIM:城镇人均犯罪率。
RM:平均房间数(与房价强正相关)。
LSTAT:低收入人口比例(与房价强负相关)。
DIS:就业中心距离。
PTRATIO:师生比例
2.多元线性回归实例:房价预测
本文为了简洁易懂,启用上述材料集简化选择后的子数据集,作为原始数据,应用最小二乘法,拟合各变量与房价的关系。
简化选择后的房价信息集如下,共涵盖四列10组数据,其中前三个为因素变量(包括面积(m²), 房间数, 房龄(年),),最后一个为响应变量(房价(万元)):
序号 | 面积(m²), 房间数, 房龄(年), 房价(万元) |
1 | 80, 2, 5, 320; |
2 | 95, 3, 2, 420; |
3 | 110, 3, 10, 380; |
4 | 65, 1, 20, 280; |
5 | 150, 4, 5, 550; |
6 | 120, 3, 15, 410; |
7 | 100, 2, 8, 360; |
8 | 85, 2, 3, 340; |
9 | 130, 3, 1, 480; |
10 | 70, 1, 25, 260 |
3.Matlab编程代码如下
data = [ 80, 2, 5, 320;
95, 3, 2, 420;
110, 3, 10, 380;
65, 1, 20, 280;
150, 4, 5, 550;
120, 3, 15, 410;
100, 2, 8, 360;
85, 2, 3, 340;
130, 3, 1, 480;
70, 1, 25, 260];
% 提取变量
X = data(:, 1:3); %影响因素
Y = data(:, 4); %房价
% 构建设计矩阵(与一元变量做法一致,参考上篇文章)
X_design = [ones(size(X,1), 1), X];
% 求解多元回归系数(正规方程法,参考上篇文章)
beta = (X_design' * X_design) \ (X_design' * Y)
运行结果:
beta =
127.9558
2.1454
21.9905
-1.7393
% 预测房价
Y_pred = X_design * beta;
% 误差分析
residuals = Y - Y_pred;
SSE = sum(residuals.^2);
SST = sum((Y - mean(Y)).^2);
R_squared = 1 - SSE/SST %决定系数
运行结果:
R_squared =
0.9497
% 可视化预测结果
figure;
scatter(Y, Y_pred, 80, 'filled', 'MarkerFaceColor', [0.4 0.7 0.4]);
hold on;
plot([min(Y), max(Y)], [min(Y), max(Y)], 'r--', 'LineWidth', 1.5);
xlabel('实际房价 (万元)');
ylabel('预测房价 (万元)');
title('多元线性回归预测结果');
legend('数据点', '理想拟合线', 'Location', 'northwest');
grid on;
运行结果:

4. 房价预测结果分析与解释
回归方程: 房价 = 127.9558 + 2.1454*面积 + 21.9905*房间数 - 1.7393*房龄,所有系数符号符合实际预期,面积越大,房价越高,房龄越大,房价越低,值得注意的是,房间数影响最显著。
决定系数 R² = 0.9497,模型解释力强(R²>0.94)
相关视频内容推荐
37.21 Appdesigner实例:信息查询筛选导出系统
67.1 Matlab两个三维函数的交线方程和交线图像
45.22 超便捷玩转Matlab深度学习工具箱深度网络设计器
21.6 一维域外插值,使用interp1同时要设置一下参数
13.4 Matlab编程求导:雅可比矩阵
23.16 最小二乘法的概念:线性、加权、鲁棒、非线性最小二乘法及Matlab编程实例
25.2.1 朴素贝叶斯算法|原理篇:连续型材料分类识别
24.2 KNN算法之邻点搜索方法:KD树,概念、原理和搜索流程KDTreeSearcher
44.6 非线性自回归神经网络narnet时序内容预测编程代码实例
67.3 连杆机构运动仿真动画
31.3 Matlab绘图之图像上添加标题、标签和图例,那些希腊的罗马的特殊字符应该都涵盖了哈
整数就是22.9 混合整数线性规划intlinprog变量取值约束
66.44 GUI/APP界面设计如何调用外部m文件进行运算并显示结果和图像(M文件GUI界面化)
End
浙公网安备 33010602011771号