带随机森林的Spark Process Dataframe

时间:2016-01-24 18:21:12

标签: apache-spark apache-spark-sql apache-spark-mllib random-forest apache-spark-ml

使用Spark 1.5.1, MLLib Random Forest Probability的答案,我可以使用ml.classification.RandomForestClassifier训练一个随机森林,并使用经过训练的随机森林处理一个保持数据帧。

我遇到的问题是我希望将这个经过训练的随机森林保存到处理任何数据帧(具有与训练集相同的功能)。

classification example on this page使用mllib.tree.model.RandomForestModel,它显示了如何保存受过训练的森林,但据我所知,我只能接受培训(并在将来处理){{1} RDD。我对LabeledPoint RDD的问题是,它只能包含标签double和要素向量,所以我会失去其他用途所需的所有非标签/非要素列。

所以我想我需要一种方法来保存LabeledPoint r的结果,或构建一个ml.classification.RandomForestClassifie RDD,它可以保留除了标签所需的列以及通过{训练的森林所需的功能{1}}。

任何人都知道为什么两个而不仅仅存在ML和MLlib库之一?

非常感谢您阅读我的问题,并提前感谢任何解决方案/建议。

1 个答案:

答案 0 :(得分:0)

我将重新使用spark编程指南中的内容:

  

spark.ml包旨在提供一系列基于DataFrame构建的统一的高级API,帮助用户创建和调整实用的机器学习流程。

在Spark中,核心功能是它的RDD。如果你有兴趣,有一篇关于这个主题的优秀论文,我可以在以后添加链接。

来自MLLib,它最初是一个独立的图书馆,并且已经融入了Spark项目。然而,Spark中的所有机器学习算法都是在RDD上编写的。

然后将DataFrame抽象添加到项目中,因此需要一种更实用的构建机器学习应用程序的方法来包括变换器和评估器,最重要的是管道。

数据工程师或科学家就此而言并不需要研究基础技术。因此抽象。

您可以同时使用两者,但是您需要记住,您在ML中使用的所有算法都是在MLlib中制作的,然后进行抽象以便于使用。