Spark 在其 MLlib 机器学习库中内置了一些函数用于特征的缩放和标准化。
- (1)StandardScaler:标准正太变换
- (2)Normalizer:特征向量正则化(范数为1, xi∥x∥ )
pyspark
>>> from pyspark.mllib.feature import Normalizer
验证两种方式(直接使用 numpy 相关函数进行处理,使用 mllib 提供的类)的归一化结果:
>>> import numpy as np
>>> np.__version__
'1.9.2' # 注意 numpy 的版本要高于 1.4 才行
>>> np.random.seed(42)
>>> x = np.random.randn(10)
(1)numpy 相关函数
>>> normalized_x_2 = x / np.linalg.norm(x)
(2)使用 MLlib 类
>>> from pyspark.mllib.feature import Normalizer >>> normalizer = Normalizer() >>> x = sc.parallelize([x]) >>> normalized_x_mllib = normalizer.transform(x).first().toArray() # toArray:返回 numpy 数组