【发布时间】:2016-03-18 00:46:15
【问题描述】:
试图理解 Spark 的规范化算法。我的小测试集包含 5 个向量:
{0.95, 0.018, 0.0, 24.0, 24.0, 14.4, 70000.0},
{1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 70000.0},
{-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 70000.0},
{-0.95, 0.018, 0.0, 24.0, 24.0, 14.4, 70000.0},
{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 70000.0},
我希望 new Normalizer().transform(vectors) 会创建 JavaRDD,其中每个向量特征在 feature-0、`feature-1 等的所有值中都被归一化为 (v-mean)/stdev。
结果集是:
[-1.4285714276967932E-5,-1.4285714276967932E-5,-1.4285714276967932E-5,-1.4285714276967932E-5,-1.4285714276967932E-5,-1.4285714276967932E-5,0.9999999993877552]
[1.357142668768307E-5,2.571428214508371E-7,0.0,3.428570952677828E-4,3.428570952677828E-4,2.057142571606697E-4,0.9999998611976999]
[-1.357142668768307E-5,2.571428214508371E-7,0.0,3.428570952677828E-4,3.428570952677828E-4,2.057142571606697E-4,0.9999998611976999]
[1.4285714276967932E-5,1.4285714276967932E-5,1.4285714276967932E-5,1.4285714276967932E-5,1.4285714276967932E-5,1.4285714276967932E-5,0.9999999993877552]
[0.0,0.0,0.0,0.0,0.0,0.0,1.0]
请注意,所有原始值 7000.0 都会产生不同的“标准化”值。此外,例如,1.357142668768307E-5 的值是:.95、1、-1、-.95、0 时如何计算?更重要的是,如果我删除一个功能,结果会有所不同。找不到有关此问题的任何文档。
其实我的问题是,如何正确规范化RDD中的所有向量?
【问题讨论】:
-
你确定你的输入都是正确的吗?如果您手动计算,您认为 stdev 是什么?
标签: apache-spark apache-spark-mllib apache-spark-ml