Spark机器学习:线性回归预测房价

全民都在机器学习

最近机器学习真是全民都在学啊,火的不行,公司里也在举办“算法大赛”和各种讲座培养纯工程程序员的数据和算法意识。正好最近对数字加密货币的行情走势预测也比较感兴趣,所以最近准备开始学一波。

首先是看的Coursera上NG的机器学习课程,这个课程真是好评如潮,基本是机器学习入门必学课程了。课程侧重于讲解各种机器学习算法的实现原理,并通过Octave/Matlab编码实现。最近两周学了最最简单的“线性回归”算法。

考虑到以后工程中更多地是用Java/Python代码来实现,然后就自学了Spark-MLlib,用它来实现学过的机器学习算法。

选择Spark的原因很简单:基于Scala,类型安全,写起来不啰嗦,库功能强大,能和Hadoop无缝结合。

房价数据准备

嗯,不说废话了,上数据:

这是从网上找到的,房子属性和房价的数据。每一列分别为:houseSizelotSizebeedRoomsgranitebathroomsellingPrice

也就是说,我们要通过学习这份数据,根据前5列属性,具备预测最后一列:房价的能力。

准备数据

我这里使用的Scala版本是2.11Spark版本是2.2.1,基于DataFrameSparkSession。注意网上大多数是基于RDD的代码,RDD方式目前只进行维护,不再添加新功能,并且将在Spark 3.0废弃。而SparkSession是新版Spark提供的全功能API入口,比之前的SparkConfSparkContextAPI更好用。

代码读取txt文件加载数据,将数据标记为features特征(五个房子属性)和label标记(房价)。并手工构造了两份测试数据。

训练模型

核心代码只有一点,然后输出了训练出的模型的结果和参数。

预测房价

输出结果为(格式化后):

可以看到,prediction属性即为预测的房价结果~

1 条评论

发表评论

电子邮件地址不会被公开。