【问题标题】:Calculate Spearman Correlation on a Spark DataFrame在 Spark DataFrame 上计算 Spearman 相关性
【发布时间】:2015-08-24 19:47:33
【问题描述】:

我想对当前在 Spark DataFrame 中的数据运行 Spearman 关联。目前,只有 Pearson 相关计算可用于对 DataFrame 中的列进行操作。看来我可以使用 Spark 的 MLlib 进行 Spearman 关联,但我需要将两个 RDD[Double] 传递给函数。根据当前架构,我要比较的列是 Double。

有没有办法选择我想要的列并使其成为一个双精度数组,以便我可以使用 MLlib 相关函数来获取 Spearman 相关系数?

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    您可以简单地选择感兴趣的列、提取值和计算统计信息:

    import sqlContext.implicits._
    import org.apache.spark.mllib.stat.Statistics
    
    // Generate some random data
    scala.util.Random.setSeed(1)
    val df = sc.parallelize(g.sample(1000).zip(g.sample(1000))).toDF("x", "y")
    
    
    // Select columns and extract values
    val rddX = df.select($"x").rdd.map(_.getDouble(0))
    val rddY = df.select($"y").rdd.map(_.getDouble(0))
    
    val correlation: Double = Statistics.corr(rddX, rddY, "spearman")
    

    【讨论】:

      【解决方案2】:

      你应该可以做这样的事情

      val firstRDD: RDD[Double] = yourDF.select("field1").map(row => row.getDouble(0))
      val secondRDD: RDD[Double] = yourDF.select("field2").map(row => row.getDouble(0))
      val corr = Statistics.corr(firstRDD, secondRDD, "spearman")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-01
        • 2023-03-14
        • 1970-01-01
        • 2018-05-09
        • 2018-04-11
        • 1970-01-01
        • 2018-02-01
        相关资源
        最近更新 更多