【发布时间】:2018-06-19 23:37:44
【问题描述】:
我是 apache spark 和 scala 的新手。我有这样的数据集,我从 csv 文件中获取并使用 scala 将其转换为 RDD。
+-----------+-----------+----------+
| recent | Freq | Monitor |
+-----------+-----------+----------+
| 1 | 1234 | 199090|
| 4 | 2553| 198613|
| 6 | 3232 | 199090|
| 1 | 8823 | 498831|
| 7 | 2902 | 890000|
| 8 | 7991 | 081097|
| 9 | 7391 | 432370|
| 12 | 6138 | 864981|
| 7 | 6812 | 749821|
+-----------+-----------+----------+
我想计算 z-score 值或标准化数据。所以我正在计算每列的 z 分数,然后尝试将它们组合起来,这样我就得到了标准比例。
这是我计算第一列 z 分数的代码
val scores1 = sorted.map(_.split(",")(0)).cache
val count = scores.count
val mean = scores.sum / count
val devs = scores.map(score => (score - mean) * (score - mean))
val stddev = Math.sqrt(devs.sum / count)
val zscore = sorted.map(x => math.round((x.toDouble - mean)/stddev))
如何计算每一列?或者有没有其他方法来规范化或标准化数据?
我的要求是分配等级(或等级)。
谢谢
【问题讨论】:
标签: scala apache-spark statistics