我正在Apache Spark中开发一个基于Scala的极端学习机。我的模型必须是Spark Estimator并使用Spark框架才能适应机器学习管道。有谁知道Breeze是否可以与Spark一起使用?我的所有数据都在Spark数据框中,可以想象我可以使用Breeze导入它,使用Breeze DenseVectors作为数据结构,然后转换为Estimator部分的DataFrame。 Breeze的优点在于它具有Moore-Penrose伪逆的函数pinv
,它是非方矩阵的逆。据我所知,Spark MLlib中没有等效的功能。我不知道是否可以将Breeze张量转换为Spark DataFrames,所以如果有人有这方面的经验,那将非常有用。谢谢!
答案 0 :(得分:3)
Breeze可以与Spark一起使用。事实上,它在内部用于许多MLLib函数,但所需的转换不会公开为public
。您可以添加自己的转化,并使用Breeze处理单个记录。
例如,对于Vectors
,您可以找到转换代码:
对于Matrices
,请参阅Matrices.scala
asBreeze
/ fromBreeze
但是,它不能用于分布式数据结构。 Breeze对象使用低级库,不能用于分布式处理。因此DataFrame
- 仅当您向驱动程序提供collect
数据并且仅限于可以将数据存储在驱动程序内存中的情况时,才可能进行Breeze对象转换。
还有其他库like SysteML,它们与Spark集成,并在分布式对象上提供更全面的线性代数例程。