共计 938 个字符,预计需要花费 3 分钟才能阅读完成。
上一篇文章讲解了数据预处理区间缩放法,这篇文章主要讲解数据归一化处理
既然讲到归一化和前面的标准化需要对比一下,首先二者处理的维度是不一样的,假设我们要处理的矩阵是m*n大小,m个样本,n维特征
标准化处理的方式是以列为单位,也就是处理的对象是
m*k k={1……..n}
归一化处理的方式却是以行为单位,处理的对象如下:
k*n k={1……..m}
归一化处理对样本的特征向量处理之后使其变为单位向量,单位向量可以用于点积运算或者计算样本之间相似度
L2归一化的计算公式如下所示:
y=\frac{x}{\sqrt{\sum_{i=0}^{n}x^2}}
L1归一化的计算公式如下所示
y=\frac{x}{\sum_{i=0}^{n}\|x\|}
sklearn代码
from sklearn.preprocessing import Normalizer
tmp=Normalizer().fit_transform(irisdata.data)
print tmp[0:5]
实验结果如下
[[ 0.80377277 0.55160877 0.22064351 0.0315205 ]
[ 0.82813287 0.50702013 0.23660939 0.03380134]
[ 0.80533308 0.54831188 0.2227517 0.03426949]
[ 0.80003025 0.53915082 0.26087943 0.03478392]
[ 0.790965 0.5694948 0.2214702 0.0316386 ]]
spark代码如下
from pyspark.ml.feature import Normalizer
dataFrame = sqlContext.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")
# p=2则表示是l2归一化
normalizer = Normalizer(inputCol="features", outputCol="normFeatures", p=1.0)
l1NormData = normalizer.transform(dataFrame)
l1NormData.show()
正文完
请博主喝杯咖啡吧!