我正在使用apache spark在csv文件上应用相关性,在加载数据时我不得不跳过第一行作为标题,这是数据集中的列,否则我无法加载数据。
我得到了相关性,但是当我得到相关矩阵时,我无法在新矩阵中添加列名作为标题。如何获得带有标题的矩阵?这就是我的尝试:
import org.apache.spark.mllib.linalg.{ Vector, Vectors }
import org.apache.spark.mllib.stat.Statistics
import org.apache.spark.mllib.linalg.Matrix
import org.apache.spark.rdd.RDD
val data = sc.textFile(strfilePath).mapPartitionsWithIndex {
case (index, iterator) => if (index == 0) iterator.drop(1) else iterator
}
val inputMatrix = data.map { line =>
val values = line.split(",").map(_.toDouble)
Vectors.dense(values)
}
val correlationMatrix = Statistics.corr(inputMatrix, "pearson")
答案 0 :(得分:1)
在Spark 2.0+中,您可以使用以下命令将csv文件加载到数据框中:
val df = spark.read.option("header", "true").option("inferSchema", "true").csv("filePath")
然后可以使用
计算不同列之间的相关性df.stat.corr("col1", "col2", "pearson")