Apache spark 带随机林的Spark过程数据帧

Apache spark 带随机林的Spark过程数据帧,apache-spark,apache-spark-sql,apache-spark-mllib,random-forest,apache-spark-ml,Apache Spark,Apache Spark Sql,Apache Spark Mllib,Random Forest,Apache Spark Ml,使用的答案,我能够使用ml.classification.RandomForestClassifier训练一个随机林,并使用训练后的随机林处理一个保持数据帧 我的问题是,我想保存这个经过训练的随机林,以便将来处理任何数据帧(具有与训练集相同的特性) 使用mllib.tree.model.RandomForestModel,它显示了如何保存经过训练的林,但据我所知,只能在LabeledPointRDD上进行训练(并在将来进行处理)。对于LabeledPointRDD,我遇到的问题是,它只能包含双标

使用的答案,我能够使用
ml.classification.RandomForestClassifier
训练一个随机林,并使用训练后的随机林处理一个保持数据帧

我的问题是,我想保存这个经过训练的随机林,以便将来处理任何数据帧(具有与训练集相同的特性)

使用
mllib.tree.model.RandomForestModel
,它显示了如何保存经过训练的林,但据我所知,只能在
LabeledPoint
RDD上进行训练(并在将来进行处理)。对于
LabeledPoint
RDD,我遇到的问题是,它只能包含双标签和特征向量,因此我将丢失用于其他目的所需的所有非标签/非特征列

因此,我想我需要一种方法来保存
ml.classification.randomForestClassification
r的结果,或者构造一个
LabeledPoint
RDD,它可以保留除标签之外的列,以及通过
mllib.tree.model.RandomForestModel
训练的林所需的特性

有人知道为什么ML和MLlib库都存在,而不是只存在一个吗


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

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

spark.ml包旨在提供一套统一的、构建在数据框架之上的高级API,帮助用户创建和调整实用的机器学习管道

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

MLLib一开始是一个独立的库,后来加入了Spark项目。然而,Spark中所有的机器学习算法都是在RDDs上编写的

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

数据工程师或科学家不需要研究底层技术,因此抽象


您可以同时使用这两种方法,但您需要记住,从ML使用的所有算法都是在MLlib中生成的,然后进行抽象以便于使用

感谢Eliasah,这澄清了ml和mllib之间的区别。我的主要问题是能够保存一个经过训练的随机林,并预测一个数据帧而不是一个标签点rdd的值。有什么想法吗?预测有什么问题吗?你读过我在你问题中的链接上的答案了吗?恐怕你在这里不是很清楚。您想对其使用ML save和predict?ML允许您对数据帧进行预测,但不允许您进行保存。MLLIB允许保存,但不允许在数据帧上进行预测(仅在labelledpoint RDD上)。我想保存随机林(比如MLLIB允许,ML不允许),并使用保存的林来预测数据帧(比如MLLIB不允许,ML不允许),最后是相同的算法。但不幸的是,save方法目前在ML中不可用。我相信这是JIRA的问题,所以现在的解决方案是使用labeledpoint和mllib创建模型。不幸的是,即使PMML导出也不能用于RF on ML。