【问题标题】:Scikit-learn KNN(K Nearest Neighbors ) parallelize using Apache SparkScikit-learn KNN(K Nearest Neighbors ) 使用 Apache Spark 并行化
【发布时间】:2016-10-12 13:48:57
【问题描述】:

我一直在使用 Python 和 Python 的 Scikit-learn 机器学习 API 研究机器学习 KNN(K 最近邻)算法。

我使用 python 和 Scikit-learn 创建了带有玩具数据集的示例代码,我的 KNN 工作正常。但正如我们所知,Scikit-learn API 是为在单机上工作而构建的,因此一旦我将我的玩具数据替换为数百万个数据集,它就会降低我的输出性能。

我已经搜索了许多选项、帮助和代码示例,它们将使用 Spark 和 Scikit-learn API 并行分发我的机器学习处理,但我没有找到任何合适的解决方案和示例。

您能否告诉我如何使用 Apache Spark 和 Scikit-learn API 的 K 最近邻实现并提高我的性能?

提前致谢!!

【问题讨论】:

  • 您的问题非常广泛。但是,我认为这篇文章可能会对您有所帮助Auto scaling sci-kit learn with Apache Spark
  • 嗨@AlbertoBonsanto,我已经浏览了您提供的链接,但我没有找到如何使用 Spark 扩展我的 Scikit-learn KNN。我还通过 Spark 官方网站上提供的 Scikit-learn 第三方包进行了 gobe,但我不确定 API 并且没有找到适当示例的太多帮助。

标签: python scala apache-spark machine-learning scikit-learn


【解决方案1】:

根据https://issues.apache.org/jira/browse/SPARK-2336 的讨论,这里 MLLib(Apache Spark 的机器学习库)没有 KNN 的实现。 你可以试试https://github.com/saurfang/spark-knn

【讨论】:

  • 嗨 Krishna,是的,Spark MLlib 不支持 KNN。但在这里我没有使用 Spark 的 MLlib 进行机器学习。我正在使用 Python 和 Scikit-learn KNN。但问题在于数据集繁重,我的算法需要数小时来训练数据集和预测。所以我想利用我现有的 python KNN 实现来利用 Spark 分发能力,从而减少我的处理时间。
  • 这里的 spark 只能帮助像网格搜索这样的超参数优化技术。我不确定您是否可以实现您的要求。
  • 嗨,克里希纳,你是对的。但我正在考虑将模型处理分成单独的批次,并使用 spark 将所有批处理并行化到集群中。我认为这样我们可以实现并行性,但我必须用实际数据进行尝试,看看它是否对处理时间产生任何影响。谢谢。
猜你喜欢
  • 2020-07-16
  • 1970-01-01
  • 2018-04-14
  • 2021-06-12
  • 2012-03-20
  • 2019-04-07
  • 1970-01-01
  • 2015-08-07
  • 2015-08-15
相关资源
最近更新 更多