Spark 和 ScalaNLP 库 Breeze 可以一起使用吗?

Luc*_*ess 2 matrix-inverse scala-breeze apache-spark

我正在 Apache Spark 中开发基于 Scala 的极限学习机。我的模型必须是 Spark Estimator 并使用 Spark 框架才能适应机器学习管道。有谁知道 Breeze 是否可以与 Spark 一起使用?我的所有数据都在 Spark 数据帧中,可以想象我可以使用 Breeze 导入它,使用 Breeze DenseVectors 作为数据结构,然后转换为用于 Estimator 部分的 DataFrame。Breeze 的优点是它有一个pinv针对 Moore-Penrose 伪逆的函数,它是一个非方阵的逆。据我所知,Spark MLlib 中没有等效的功能。我不知道是否可以将 Breeze 张量转换为 Spark DataFrames,所以如果有人有这方面的经验,那将非常有用。谢谢!

hi-*_*zir 5

  • Breeze 可以与 Spark 一起使用。实际上在内部用于许多 MLLib 函数,但所需的转换未公开为public. 您可以添加自己的转换并使用 Breeze 来处理单个记录。

    例如,Vectors您可以找到转换代码:

    对于Matrices请参阅asBreeze/fromBreezeMatrices.scala

  • 但是,它不能用于分布式数据结构。Breeze 对象使用低级库,不能用于分布式处理。因此DataFrame- Breeze 对象转换只有在您将collect数据发送到驱动程序时才有可能,并且仅限于数据可以存储在驱动程序内存中的情况。

  • 还有其他库,如 SysteML,它们与 Spark 集成并在分布式对象上提供更全面的线性代数例程。

  • 谢谢你!我想除了需要访问 Breeze 的 pinv 函数的操作之外,我将在本地使用 Spark 中的数据结构。我希望它存在于 MLlib 中。 (2认同)