繁体   English   中英

如何使用 scala 在 Spark 中计算相关矩阵?

[英]How to calculate a correlation matrix in Spark using scala?

在 python pandas ,当我有一个dataframe df 像这样

c1 c2 c3
0.1 0.3 0.5
0.2 0.4 0.6

我可以使用df.corr()来计算相关矩阵。

如何使用 scala 在 Spark 中做到这一点?

我已经阅读了官方文档,数据结构与上面不同。 我不知道如何转移它。

更新一:

val df = Seq(
    (0.1, 0.3, 0.5,0.6,0.8,0.1, 0.3, 0.5,0.6,0.8),
    (0.2, 0.4, 0.6,0.7,0.7,0.2, 0.4, 0.6,0.7,0.7),
).toDF("c1", "c2", "c3","c4","c5","c6", "c7", "c8","c9","c10")

val assembler = new VectorAssembler().setInputCols(Array("c1", "c2", "c3","c4","c5","c6", "c7", "c8","c9","c10")).setOutputCol("vectors")

当列数为 10 时如何显示整个结果?

您可以使用以下代码解决您的问题。 它将应用 Pearson 相关性,这也是 Pandas function 的标准。

import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.ml.stat.Correlation

val df = Seq(
    (0.1, 0.3, 0.5),
    (0.2, 0.4, 0.6),
).toDF("c1", "c2", "c3")

val assembler = new VectorAssembler()
  .setInputCols(Array("c1", "c2", "c3"))
  .setOutputCol("vectors")

val transformed = assembler.transform(df)

val corr = Correlation.corr(transformed, "vectors").head

println(s"Pearson correlation matrix:\n $corr")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM