范数类型
- norm参数表示范数的类型,其中可选的值分别有:
l1
L1范数(曼哈顿距离)l2
L2范数 (欧几里得距离,默认值)max
L∞L\inftyL∞ 最大数范式- 以下是从normalize函数源码中截取的有关于norm参数部分
norm : {'l1', 'l2', 'max'}, default='l2'
The norm to use to normalize each non zero sample (or each non-zero
feature if axis is 0).
L1范数
- 平面上两点a(x1,y1),b(x2,y2),它们之间的曼哈顿距离为 d(a,b)=∣x1−x2∣+∣y1−y2∣d(a,b)=|x_1-x_2|+|y_1-y_2|d(a,b)=∣x1−x2∣+∣y1−y2∣
- L1范数公式
∥x∥1=∑i=1n∣xi∣ \parallel x \parallel _1 = {\textstyle \sum_{i=1}^{n}}\mid x_i \mid ∥x∥1=∑i=1n∣xi∣ - 将每个样本(行/列)的元素的绝对值之和缩放到1
L2范数
- 平面上两点a(x1,y1),b(x2,y2),它们之间的欧式距离为 d(a,b)=(x1−x2)2+(y1−y2)2d(a,b)=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}d(a,b)=(x1−x2)2+(y1−y2)2
- 当数据点在同一行或者同一列,那么它们任意两点之间只有一个相同维度的数据会影响到欧式距离
- 公式
∥x∥2=∑i=1nxi2 \parallel x \parallel _2 = \sqrt{{\textstyle \sum_{i=1}^{n}}x_i^2 } ∥x∥2=∑i=1nxi2 - 保持向量方向的同时消除幅度差异
max范数
- 公式
∥x∥∞=max(∣x1∣,∣x2∣,⋅⋅⋅,∣xn∣) \parallel x \parallel _{\infty} =max(|x_1| ,|x_2|,···,|x_n|) ∥x∥∞=max(∣x1∣,∣x2∣,⋅⋅⋅,∣xn∣) - 将每个样本的最大绝对值元素缩放到1
简单使用
import numpy as np
import sklearn.preprocessing as sp
raw_sample = np.array([
[30.0, -13.0, 22.0],
[0.0, 42.0, 43.0],
[10.0, -243.0, 322.0]
])
print(sp.normalize(raw_sample, norm="l1"))
print(sp.normalize(raw_sample, norm="l2"))
print(sp.normalize(raw_sample, norm="max"))
如有错误请联系作者改正,谢谢!