/ / Qr факторизация в скала - скала, апаш-искра

Qr факторизация в скала - скала, apache-spark

Аз съм новак тук и ето следният пример, опитвам се да репликирам ..

    val A = DenseMatrix((1.0, 1.0, 1.0), (4.0, 2.0, 1.0), (16.0, 4.0, 1.0))
val QR(_Q, _R) = qr(A)

И моята реализация в Scala е:

object qr_factorization {
def qr_factor(A: RowMatrix,nrows: Int, ncols: Int):(Any, Any) = {
val rows = A.rows.map(_.toArray).collect().flatten
val dense_matrix = DenseMatrix.fill(nrows, ncols)(rows)
println(dense_matrix)
val QR(_Q, _R) = qr(dense_matrix)
return (_Q,_R)

}

}

RowMatrix е от искра api https://spark.apache.org/docs/1.1.0/api/scala/index.html#org.apache.spark.mllib.linalg.distributed.RowMatrix

Когато се опитвам да компилирам горното, получавам грешката:

could not find implicit value for parameter impl: breeze.linalg.qr.Impl[breeze.linalg.DenseMatrix[Array[Double]],VR]
[error]     val QR(_Q, _R) = qr(dense_matrix)
[error]                        ^
[error] one error found
[error] (compile:compile) Compilation failed

Не съм сигурен, разбирам грешката :(

Отговори:

0 за отговор № 1

Понастоящем няма QR () изпълнение наRowMatrix в публичната библиотека на API, обаче има "tallSkinnyQR". този QR е оптимизиран за висока кльощава матрица, която често е случаят с матрици на bigdata (редовете са много по-грешни от колоните)

обадете се по следния начин:

def qr_factor(A: RowMatrix,nrows: Int, ncols: Int):(Any, Any) = {
.....
.....
val QR= qr(dense_matrix)
(QR._1,QR._1)

}

Между другото, няма нужда return в Скала, като цяло.