我在 Scala 中有这样的代码:
val mat: CoordinateMatrix = new CoordinateMatrix(data)
val rowMatrix: RowMatrix = mat.toRowMatrix()
val svd: SingularValueDecomposition[RowMatrix, Matrix] = rowMatrix.computeSVD(100, computeU = true)
val U: RowMatrix = svd.U // The U factor is a RowMatrix.
val S: Vector = svd.s // The singular values are stored in a local dense vector.
val V: Matrix = svd.V // The V factor is a local dense matrix.
val uArray: Array[Double] = U.toArray // doesn't work, because there is not toArray function in RowMatrix type
val sArray: Array[Double] = S.toArray // works good
val vArray: Array[Double] = V.toArray // works good
我该如何改变U into uArray或者类似的类型,可以打印成 CSV 文件吗?
这是一个基本操作,考虑到 U 是 RowMatrix,您必须执行以下操作:
val U = svd.U
rows() 是一个 RowMatrix 方法,允许您从 RowMatrix 中按行获取 RDD。
您只需要在 RowMatrix 上应用行并映射 RDD[Vector] 来创建一个数组,您可以将其连接到创建 RDD[String] 的字符串中。
val rdd = U.rows.map( x => x.toArray.mkString(","))
现在你所要做的就是保存 RDD :
rdd.saveAsTextFile(path)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)