算法代码专题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

posted @ 2025-11-05 14:53  clnchanpin  阅读(113)  评论(0)    收藏  举报