Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 理解火花相关算法_Algorithm_Scala_Apache Spark_Cross Correlation_Pearson Correlation - Fatal编程技术网

Algorithm 理解火花相关算法

Algorithm 理解火花相关算法,algorithm,scala,apache-spark,cross-correlation,pearson-correlation,Algorithm,Scala,Apache Spark,Cross Correlation,Pearson Correlation,我正在阅读Spark correlation算法的源代码,在阅读代码时,我无法理解这段特殊的代码 这来自以下文件:org/apache/spark/mllib/linalg/BLAS.scala def spr(alpha: Double, v: Vector, U: Array[Double]): Unit = { val n = v.size v match { case DenseVector(values) => NativeBLAS.

我正在阅读Spark correlation算法的源代码,在阅读代码时,我无法理解这段特殊的代码

这来自以下文件:org/apache/spark/mllib/linalg/BLAS.scala

 def spr(alpha: Double, v: Vector, U: Array[Double]): Unit = {
    val n = v.size
    v match {
      case DenseVector(values) =>
        NativeBLAS.dspr("U", n, alpha, values, 1, U)
      case SparseVector(size, indices, values) =>
        val nnz = indices.length
        var colStartIdx = 0
        var prevCol = 0
        var col = 0
        var j = 0
        var i = 0
        var av = 0.0
        while (j < nnz) {
          col = indices(j)
          // Skip empty columns.
          colStartIdx += (col - prevCol) * (col + prevCol + 1) / 2
          av = alpha * values(j)
          i = 0
          while (i <= j) {
            U(colStartIdx + indices(i)) += av * values(i)
            i += 1
          }
          j += 1
          prevCol = col
        }
    }
  }
defspr(alpha:Double,v:Vector,U:Array[Double]):单位={
val n=v.尺寸
v匹配{
案例密度系数(值)=>
NativeBLAS.dspr(“U”,n,alpha,值,1,U)
大小写分隔符(大小、索引、值)=>
val nnz=索引长度
var colStartIdx=0
var-prevCol=0
var col=0
var j=0
变量i=0
var av=0.0
而(j
相关性定义如下:

最终目标是了解火花相关算法


更新1:相关文件

阅读评论:至于其余的,我想我已经在聊天室里解释了很久了是的,非常感谢你的解释,但我想知道这个spr算法,以及它的任何参考资料。对不起,我不再回答你的问题了。好的。如果我说了什么错的话,请原谅。无论如何,谢谢你解释相关的事情。我将在周三会见我的教授。不必抱歉。只是你的问题ns非常广泛,我想把时间浪费在长时间的交流上。老实说,在这个网站上解释这么多代码是不可能的。
  def computeGramianMatrix(): Matrix = {
    val n = numCols().toInt
    checkNumColumns(n)
    // Computes n*(n+1)/2, avoiding overflow in the multiplication.
    // This succeeds when n <= 65535, which is checked above
    val nt = if (n % 2 == 0) ((n / 2) * (n + 1)) else (n * ((n + 1) / 2))

    // Compute the upper triangular part of the gram matrix.
    val GU = rows.treeAggregate(new BDV[Double](nt))(
      seqOp = (U, v) => {
        BLAS.spr(1.0, v, U.data)
        U
      }, combOp = (U1, U2) => U1 += U2)

    RowMatrix.triuToFull(n, GU.data)
  }