当前位置: 首页 > news >正文

学习记录:机器学习入门案例——波士顿房价预测(三)-波士顿房价预测与加州房价预测对比

2026年4月7日

波士顿房价预测与加州房价预测都已经运行成功,不禁疑惑,二者都是线性回归模型,有什么区别呢。

一、核心共同点:骨架完全相同

从代码层面看,这两个例子本质上执行的是同一套工作流程,这也是任何机器学习项目的基础流程:

步骤具体操作波士顿房价加州房价
1. 加载数据从CSV文件读取数据pd.read_csv()pd.read_csv()
2. 数据探索查看基本信息、统计描述、缺失值✅ 详细(形状、列名、缺失值逐列)⚠️ 简化版
3. 处理缺失值填充或删除缺失数据中位数填充缺失!未处理
4.特征标准化StandardScaler:均值=0,标准差=1✅ 完整实现✅ 完整实现
5. 划分数据集训练集/测试集分割✅ test_size=0.2, random_state=42✅ test_size=0.2, random_state=42
6. 训练模型LinearRegression().fit()
7. 预测model.predict()
8. 评估模型MSE、R²、SSE等指标✅ 完整(含RMSE)✅ 基础版
9. 可视化分析散点图、残差图、热力图有残差图⚠️ 无残差图

二、关键不同点:细节里的差异

2.1 数据来源和背景不同

对比项波士顿房价加州房价
数据年代1978年1990年
样本数量506条20640条
特征数量13个(加上目标共14列)8个(加上目标共9列)
目标变量MEDV(千美元)medianHouseValue(美元)
当前状态sklearn 1.2+已移除仍在使用,是官方推荐的替代数据集

2.2 数据预处理差异

这是初学者最容易忽略但非常重要的区别

处理步骤波士顿代码加州代码
缺失值检查✅ 检查并显示每列缺失数❌ 只检查总数,没逐列显示
缺失值处理用中位数填充完全没有处理!

加州代码的"坑":

python

print("检查缺失值") print(data.isnull().sum()) # 只打印,不处理!

如果原始数据有缺失值(比如某些房子的"房龄"没填),加州代码会直接报错或产生错误预测。

波士顿代码的"正确做法":

python

for column in df.columns: if df[column].isnull().any(): median_value = df[column].median() df[column].fillna(median_value, inplace=True)

注意:缺失值处理是数据清洗的必修课!实际工作中,你拿到的数据几乎总是"不干净"的,要学会像波士顿代码那样处理。

2.3 输出信息的详细程度

输出内容波士顿代码加州代码
数据形状✅ 打印❌ 没打印
数据列名✅ 打印❌ 没打印
缺失值详情✅ 逐列显示⚠️ 只显示总数
特征系数✅ 循环打印所有特征❌ 手动一个个写死
回归方程式✅ 动态构建⚠️ 手动拼接(易错)
特征重要性排序✅ 按绝对值排序❌ 没有

波士顿代码更"专业"的例子:

python

# 动态构建回归方程(优雅、可扩展) equation = f"回归方程式: y = {intercept:.4f}" for name, coef in zip(feature_names, model.coef_): equation += f" + ({coef:.4f} * {name})"

加州代码的"硬编码"问题:

python

# 手动写死8个特征(如果特征数量变化,代码就要改) slope0 = model.coef_[0] slope1 = model.coef_[1] # ... 一共8行 print(f'y={slope0}*x0 + {slope1}*x1 ...')

对初学者的启示:波士顿代码的写法更"专业"——尽量用循环和动态拼接,而不是硬编码。这样当数据变化时(比如换成有20个特征的数据集),代码不需要重写。

2.4 可视化分析深度

可视化波士顿代码加州代码
目标变量分布图✅ 带KDE的直方图✅ 带KDE的直方图
相关性热力图✅ 带相关系数标注✅ 热力图
实际vs预测散点图有理想预测参考线✅ 有参考线
残差图有!检验模型假设❌ 没有

残差图的意义:
残差图是检验线性回归假设是否成立的重要工具。波士顿代码多做了这一步,说明它更注重模型诊断而不仅仅是预测结果。

原来有这么多区别,那么我不是可以参照波士顿代码,优化一下加州代码啊。优化代码放到加州房价预测文章中吧!

http://www.jsqmd.com/news/607227/

相关文章:

  • 直播保存新方案:多平台支持的自动录制工具使用指南
  • SDD 之外是 Harness 吗?
  • SetFit迁移学习最佳实践:如何在不同领域间高效迁移
  • BiliBili-UWP终极指南:Windows平台上的B站原生体验革新
  • 抖音无水印视频下载工具:从内容获取到价值创造的全流程解决方案
  • Bitwarden Web Vault:终极密码管理平台完全指南
  • 一文看懂MEMS陀螺仪:从零偏稳定性到厂商选择,国产替代全攻略 - 深度智识库
  • Arduino-Pico:Raspberry Pi Pico Arduino核心完全指南 - 支持所有RP2040和RP2350开发板
  • 探寻2026年长沙江景房隔音大玻璃、大平层全屋隔音窗源头工厂哪个口碑好 - myqiye
  • DataRoom:企业级数据可视化架构的现代化重构
  • Beyond Compare 5 终极密钥生成指南:RSA加密与授权机制深度解析
  • LeetCode--151.反转字符串中的单词(字符串/双指针法)
  • open-vm-tools 故障排除指南:10个常见问题与解决方案
  • 新手必看!圣女司幼幽-造相Z-Turbo一键部署与快速出图指南
  • intv_ai_mk11可自主部署:脱离云API,数据不出内网的安全文本生成方案
  • CentOS 7.7(基于 RHEL 7 系列)中,账号管理与权限控制是系统安全管理【20260408】005篇--ansible-playbook版本
  • 美国秋招机构怎么选:HM内推+身份规划服务(26年榜单) - Matthewmx
  • 聊聊广州德系车专门修理价格,了解一下大概费用多少钱 - myqiye
  • STM32点灯翻车实录:从原理图分析到代码调试,手把手教你排查PC13不亮的问题
  • AnyLogic-Pypeline:跨语言集成与工作流自动化的仿真革新方案
  • 技术创新带来的创作革命
  • 告别熬夜肝论文!揭秘百考通AI如何用“双降”黑科技,搞定毕业季全流程难题
  • 华为交换机等保合规实战:构建“身份鉴别”安全基线
  • 企业微信服务商争源数字科技谈中小企业如何用好数字化工具
  • 每天2起融资、3亿入场,具身智能上演资本核爆
  • 深入浅出ArrayList:从线性表到洗牌算法,掌握Java集合核心
  • 别再手动调色了!用Matlab的ColorCopy插件,5分钟搞定Nature级柱状图配色
  • TMSpeech:Windows本地实时语音识别工具完整使用指南
  • 逆向工程实战:从exe4j打包的GUI程序中提取并反编译Java源码
  • 从电网电压到数字信号:深入浅出图解DQ锁相环(PLL)的四种工作模式