在Scala中遍历列
我想创建一个包含三列的数据框:“变量1”、“变量2”、“关联”,来自一个200个变量的给定数据框 现在,对于数据帧中的任意两列,我使用以下代码来计算相关性在Scala中遍历列,scala,apache-spark,Scala,Apache Spark,我想创建一个包含三列的数据框:“变量1”、“变量2”、“关联”,来自一个200个变量的给定数据框 现在,对于数据帧中的任意两列,我使用以下代码来计算相关性 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
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")
如何对数据帧中的一组x变量执行相同操作,以便从结果数据帧中找出相关性最高的变量您应该首先将
RDD[Row]
转换为RDD[Vector]
,然后您可以简单地使用Statistics.corr()
使用rdd
作为输入参数,生成相关矩阵:
import org.apache.spark.mllib.linalg.Vectors
val rdd_vec = df.rdd.map(row => {
Vectors.dense(row.toSeq.toArray.map({
case d: Double => d
}))
})
val correlMatrix = Statistics.corr(rdd_vec, "spearman")
您应该首先将
RDD[Row]
转换为RDD[Vector]
,然后您可以简单地使用Statistics.corr()
和RDD
作为输入参数来生成相关矩阵:
import org.apache.spark.mllib.linalg.Vectors
val rdd_vec = df.rdd.map(row => {
Vectors.dense(row.toSeq.toArray.map({
case d: Double => d
}))
})
val correlMatrix = Statistics.corr(rdd_vec, "spearman")
什么是
g
?你想要所有可能的列组合的相关性吗?是的,这是正确的,g
到底是什么?你想要所有可能的列组合的相关性吗?是的,这是正确的