试图理解Spark的归一化算法。我的小的测试集合包含5个载体:Spark中的特征归一化算法
{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
其中每个矢量的特征是归一化的方式为:所有值(v-mean)/stdev
为特征-0,`特征-1等
将所得组是:
[-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都会导致不同的“归一化”值。另外,例如,当值为:.95
,1
,-1
,-.95
,0
时如何计算1.357142668768307E-5
?更重要的是,如果我删除某个功能,结果会有所不同。找不到关于此问题的任何文档。
实际上,我的问题是,如何正确标准化RDD中的所有向量?
你确定你的输入是正确的吗?如果你手工计算你认为什么是stdev? –