提取行并进行余弦相似的有效方法

时间:2017-06-12 02:03:43

标签: scala apache-spark svd

在下面的代码中,我在进行SVD​​后获得了密集的Matrix V.我想要的是

  1. 给出一组值(比如3,7,9)。
  2. 我想提取Matrix V的第3,7和9行。
  3. 我想用Matrix V
  4. 的每一行计算这3行的余弦相似度
  5. 我需要添加每行获得的三个余弦相似度。
  6. 我终于需要具有最大总和的行索引。
  7. val data = Array(
          Vectors.sparse(5, Seq((1, 1.0), (3, 7.0))),
          Vectors.dense(2.0, 0.0, 3.0, 4.0, 5.0),
          Vectors.dense(4.0, 0.0, 0.0, 6.0, 7.0))
    
    val dataRDD = sc.parallelize(data)
    
    val mat: RowMatrix = new RowMatrix(dataRDD)
    
    // Compute the top 4 singular values and corresponding singular vectors.
    
    val svd: SingularValueDecomposition[RowMatrix, Matrix] = mat.computeSVD(4, 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.
    

    请告知一种有效的方法来做同样的事情。我一直在考虑将Matrix V转换为索引行矩阵,但是当我在V上使用行迭代器时,如何跟踪行的索引?有没有更好的方法呢?

0 个答案:

没有答案