Использование Breeze из Java на Spark MLlib

При попытке использовать MLlib из Java, как правильно использовать бриз Матричные операции? Например, умножение в scala это просто "matrix * vector". Как соответствующая функциональность выражается в Java?

Существуют такие методы, как "$colon$times", которые могут быть вызваны правильным способом.

breeze.linalg.DenseMatrix<Double> matrix= ...
breeze.linalg.DenseVector<Double> vector = ...  

matrix.$colon$times( ...

может понадобиться экземпляр оператора... breeze.linalg.operators.OpMulMatrix.Impl2 Но какой именно типизированный экземпляр операции и какие параметры следует использовать?


person Mechanee    schedule 02.12.2014    source источник
comment
Вы можете попробовать common Math для Java.   -  person CᴴᴀZ    schedule 28.12.2016


Ответы (2)


Честно очень тяжело. Breeze очень и очень активно использует имплициты, и они просто плохо переводятся в Java. У нас есть несколько совместимых с Java оболочек для обработки сигналов, но ничего для линейной алгебры. (Я бы с радостью принял запрос на вытягивание, который предоставил некоторую поддержку для упаковки вещей.)

person dlwh    schedule 02.12.2014
comment
хорошо, спасибо за предложение, но как часто мы будем сталкиваться с такими проблемами для многих потенциальных матричных операций? Это реально осуществимо? Может ли это справиться с матрицей, которая потребляет почти всю оперативную память? Преобразование (и, возможно, сохранение раньше) матрицы MLlib и загрузка ее в библиотеку матриц, более удобную для использования из Java, например, commons-math или parallel colt, будет способом использования Java в MLlib? - person Mechanee; 19.12.2014

Взгляните на https://spark.apache.org/docs/2.2.0/api/java/org/apache/spark/mllib/linalg/BLAS.html, который содержит многие операции линейной алгебры BLAS. Их можно использовать как в Scala, так и в Java.

person GroovyP    schedule 16.04.2019