大规模数据处理实战
蔡元楠
硅谷资深工程师
41608 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
大规模数据处理实战
15
15
1.0x
00:00/00:00
登录|注册

19 | 综合案例实战:处理加州房屋信息,构建线性回归模型

API使用强化
数据处理思路
预测与真实值对比
线性回归模型构建
数据集分割
数据标准化
数据转换
数据可视化
数据集预处理
数据集观察
数据集来源
数据集内容
思考问题
优化与改进
数据集实践
小结
模型评估
创建模型
预处理
进一步了解数据集
数据集介绍
实践与思考题
处理加州房屋信息
综合案例实战

该思维导图由 AI 生成,仅供参考

你好,我是蔡元楠。
今天我要与你分享的主题是“综合案例实战:处理加州房屋信息,构建线性回归模型”。
通过之前的学习,我们对 Spark 各种 API 的基本用法有了一定的了解,还通过统计词频的实例掌握了如何从零开始写一个 Spark 程序。那么现在,让我们从一个真实的数据集出发,看看如何用 Spark 解决实际问题。

数据集介绍

为了完成今天的综合案例实战,我使用的是美国加州 1990 年房屋普查的数据集。
数据集中的每一个数据都代表着一块区域内房屋和人口的基本信息,总共包括 9 项:
该地区中心的纬度(latitude)
该地区中心的经度(longitude)
区域内所有房屋屋龄的中位数(housingMedianAge)
区域内总房间数(totalRooms)
区域内总卧室数(totalBedrooms)
区域内总人口数(population)
区域内总家庭数(households)
区域内人均收入中位数(medianIncome)
该区域房价的中位数(medianHouseValue)
也就是说,我们可以把每一个数据看作一个地区,它含有 9 项我们关心的信息,也就是上面提到的 9 个指标。比如下面这个数据:
-122.230000,37.880000,41.000000,880.000000,129.000000,322.000000,126.000000,8.325200,452600.000000'
这个数据代表该地区的经纬度是(-122.230000,37.880000),这个地区房屋历史的中位数是 41 年,所有房屋总共有 880 个房间,其中有 129 个卧室。这个地区内共有 126 个家庭和 322 位居民,人均收入中位数是 8.3252 万,房价中位数是 45.26 万。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用Spark处理加州房屋信息,并构建线性回归模型。作者首先介绍了数据集的特点和关键指标,然后通过代码示例演示了如何使用Spark进行数据预处理,包括数据转换、查询和统计。接着,作者展示了如何构建线性回归模型,并使用Spark ML进行数据标准化和模型评估。整体来说,本文通过实际代码示例生动地展示了如何使用Spark处理房屋信息数据集,并构建线性回归模型,适合读者快速了解和学习相关技术特点。文章内容涵盖了数据处理、模型构建和评估等关键步骤,为读者提供了实践和思考的机会。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • JustDoDT
    终于跑通了,不容易啊,刚开始数据集没下载正确。有空值,老师给的数据集较干净。 别的数据集,要记得去除空值。 下面是实践代码jupyter https://github.com/LearningChanging/spark-exercise/blob/master/19/CaliforniaHousing.ipynb

    作者回复: 给你点赞👍加油

    2019-09-02
    3
    13
  • kylin
    请问为什么不用dateset进行数据处理而是用dateFrame?

    作者回复: PySpark的SQL库只有DataFrame,并没有DataSet。不过在Scala和Java中,DataSet已经成为了统一的SQL入口。

    2019-06-01
    2
    12
  • gotojeff
    dataset不支持python, 所以在python里只有DF,这算不算python的一大劣势?scala是更好的选择?

    作者回复: 感谢提问。PySpark现在不支持DataSet,只有Scala和Java支持。这是由语言特性决定的,Python是动态类型的语言,而DataSet是强类型的,要求在编译时检测类型安全。所以,在所有用Python的代码例子中,我用的都是DataFrame。 大部分人都同意在Spark中,Scala和Python是优于Java和R的。至于在Spark生态中,Scala和Python孰优孰劣,这是个很主观的问题,我们不能只因为不支持DataSet这一点就说Python比Scala差。 Scala确实很优秀,Spark原生的实现就是用Scala写的,所以任何新发布的功能肯定支持Scala,官方文档也都是用Scala来举例子。而且Scala的性能要优于Python。但是Python也有很多优点,比如容易学习、应用场景广。这两种语言在Spark的世界中都可以满足我们绝大多数的需求,选择任何一个都不是错误的。

    2019-06-05
    2
    2
  • Zoe
    看前两篇文章时还在想,没什么练手的机会啊,今天就推送了实战练习,有一种终于跟上大神思维的幻觉,开心!

    作者回复: 👍

    2019-05-31
    1
  • 西北偏北
    一些实际的大数据处理,确实需要数学啊……怎么才能把数学学好?

    作者回复: 在实践中看到需要可以回头看一下基础知识

    2019-08-05
  • coder
    老师的代码可以po到Github上,这样大家都可以学习了🌝🌝🌝
    2019-05-31
    17
  • hufox
    最后一句的代码改成 predictionAndLabel[:2] ,可以了!
    2019-06-16
    2
    3
  • 咸鱼与果汁
    spark df的数据处理还是略显复杂,感觉大部分的算法人员还是使用pandas进行数据预处理,请问使用pandas是不是就无法发挥spark RDD的威力了?这种情况下spark就相当于是一个异步任务处理框架?
    2020-02-12
    1
    2
  • hufox
    在执行最后一句代码predictionAndLabel.take(2)时报错: AttributeError Traceback (most recent call last) <ipython-input-35-0700ca2381fb> in <module> ----> 1 predictionAndLabel.take(2) AttributeError: 'list' object has no attribute 'take'
    2019-06-16
    3
    2
  • henry
    最后一步,“模型预测的结果有些偏小”,这一点,从结果上看,不是应该预测的结果要大一些吗?
    2019-09-18
    1
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部