[英]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.