org.apache.spark.ml.classification和org.apache.spark.mllib.classification

时间:2015-05-14 07:35:24

标签: scala apache-spark apache-spark-mllib

我正在编写一个spark应用程序,并希望在MLlib中使用算法。在API文档中,我发现了同一算法的两个不同的类。

例如,org.apache.spark.ml.classification中的一个LogisticRegression也是org.apache.spark.mllib.classification中的LogisticRegressionwithSGD。

我能找到的唯一区别是org.apache.spark.ml中的那个继承自Estimator,并且能够用于交叉验证。我很困惑,他们被放在不同的包装中。有没有人知道它的原因?谢谢!

2 个答案:

答案 0 :(得分:22)

这是JIRA ticket

来自Design Doc

  

MLlib现在涵盖机器学习算法的基本选择,例如逻辑回归,决策树,交替最小二乘和k均值。当前的API集包含一些阻碍我们前进的设计缺陷   解决实用的机器学习管道,   使MLlib本身成为一个可扩展的项目。

     

新的API集将保留在:visited下,并且在我们将所有功能迁移到org.apache.spark.ml后,我们将弃用o.a.s.mllib

答案 1 :(得分:6)

spark mllib guide说:

  

spark.mllib包含在RDD之上构建的原始API。

     

spark.ml提供了基于DataFrame构建的更高级API,用于构建ML管道。

  

建议使用spark.ml,因为使用DataFrames,API更灵活,更灵活。但是我们将继续支持spark.mllib以及spark.ml的开发。用户应该习惯使用spark.mllib功能并期待更多功能。如果spark.ml符合ML管道概念,开发人员应该为spark.ml提供新算法,例如,特征提取器和变换器。

我认为该文档很好地解释了它。