如何在Apache Spark中计算RowMatrix的逆数?

编程入门 行业动态 更新时间:2024-10-24 12:33:18
本文介绍了如何在Apache Spark中计算RowMatrix的逆数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个RowMatrix形式的X分布矩阵.我正在使用Spark 1.3.0.我需要能够计算X逆.

I have a X, distributed matrix, in RowMatrix form. I am using Spark 1.3.0. I need to be able to calculate X inverse.

推荐答案

import org.apache.spark.mllib.linalg.{Vectors,Vector,Matrix,SingularValueDecomposition,DenseMatrix,DenseVector} import org.apache.spark.mllib.linalg.distributed.RowMatrix def computeInverse(X: RowMatrix): DenseMatrix = { val nCoef = X.numCols.toInt val svd = XputeSVD(nCoef, computeU = true) if (svd.s.size < nCoef) { sys.error(s"RowMatrixputeInverse called on singular matrix.") } // Create the inv diagonal matrix from S val invS = DenseMatrix.diag(new DenseVector(svd.s.toArray.map(x => math.pow(x,-1)))) // U cannot be a RowMatrix val U = new DenseMatrix(svd.U.numRows().toInt,svd.U.numCols().toInt,svd.U.rows.collect.flatMap(x => x.toArray)) // If you could make V distributed, then this may be better. However its alreadly local...so maybe this is fine. val V = svd.V // inv(X) = V*inv(S)*transpose(U) --- the U is already transposed. (V.multiply(invS)).multiply(U) }

更多推荐

如何在Apache Spark中计算RowMatrix的逆数?

本文发布于:2023-11-29 17:31:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1647098.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何在   Apache   RowMatrix   Spark

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!