使用scala在Spark中查看相关矩阵的所有列
Posted
技术标签:
【中文标题】使用scala在Spark中查看相关矩阵的所有列【英文标题】:Seeing all columns of a correlation matrix in Spark using scala 【发布时间】:2020-08-06 12:26:25 【问题描述】:我正在尝试训练一个 k-means 模型,目前正在检查我的特征向量中的相关性。
当我针对我的特征向量运行 pearson 相关时,我无法看到所有特征的结果。
我运行的代码是:
val cor = Correlation.corr(scoringDf, "features")
cor.show(false)
相关性运行良好,但是当我尝试使用 show 方法查看结果时(因为 Correlation.corr 返回一个 Datafame 对象),结果显示为
|1.0 0.18047211468479446 0.08002566273874058 ... (5 total)
0.18047211468479446 1.0 0.02926796076983553 ...
0.08002566273874058 0.02926796076983553 1.0 ...
0.30256416877032244 0.15974389490583188 0.054692657400425136 ...
0.3408783412055776 0.13008391583866225 0.04241296238931376 ...|
有没有办法查看隐藏的列?
我也试过下面的代码,但结果是一样的。
val Row(coeff1: Matrix) = Correlation.corr(scoringDf, "features").head
println(s"Pearson correlation matrix:\n $coeff1")
编辑:
这里是 cor 数据框的架构
root
|-- pearson(features): matrix (nullable = false)
【问题讨论】:
【参考方案1】:最后我能够以我想要的方式获得输出。 将我的代码更改为如下所示
val Row(coeff1: Matrix) = Correlation.corr(scoringDf, "features").head
println(s"Pearson correlation matrix:\n " + coeff1.toString(10, 100000))
输出显示如下:
Pearson correlation matrix:
1.0 0.1804721146847944 0.08002566273874055 0.3025641687703226 0.34087834120557725
0.1804721146847944 1.0 0.02926796076983553 0.15974389490583193 0.13008391583866233
0.08002566273874055 0.02926796076983553 1.0 0.05469265740042514 0.042412962389313726
0.3025641687703226 0.15974389490583193 0.05469265740042514 1.0 0.241118490251708
0.34087834120557725 0.13008391583866233 0.042412962389313726 0.241118490251708 1.0
【讨论】:
【参考方案2】:方法 show() 有几个选项,例如你可以试试:
def show(numRows: Int, truncate: Int, vertical: Boolean): Unit
numRows 要显示的行数
截断 如果设置为大于 0,则截断字符串以截断字符,并且所有单元格将右对齐。
垂直 如果设置为 true,则垂直打印输出行(每列值一行)。
您可以查看文档。
http://spark.apache.org/docs/2.3.0/api/scala/index.html#org.apache.spark.sql.Dataset
希望对你有帮助。
问候。
【讨论】:
它没有帮助,即使使用上述定义后,我得到类似的输出 我改了答案,也许能帮上忙。 顺便问一下,您使用的是 spark-shell、spark-submit、IntelliJ 还是 Eclipse? 我正在使用 Jupyter 笔记本。顺便说一句,我刚刚用 cor 数据框的模式编辑了我的问题。我怀疑它的 Matrix 类型不允许显示所有字段 我找到了问题的答案。以上是关于使用scala在Spark中查看相关矩阵的所有列的主要内容,如果未能解决你的问题,请参考以下文章