sklearn实现数据标准化(Standardization)和归一化(Normalization)
标准化(Standardization)
sklearn的标准化过程,即包括Z-Score标准化,也包括0-1标准化,并且即可以通过实用函数来进行标准化处理,同时也可以利用评估器来执行标准化过程。接下来我们分不同功能以的不同实现形式来进行讨论:
Z-Score标准化的评估器实现方法
#首先是评估器导入
from sklearn.preprocessing import StandardScaler
#评估器的实例化
scaler = StandardScaler()
#然后导入数据,进行训练,此处也是使用fit函数进行训练:
X = np.arange(15).reshape(5, 3)
scaler.fit(X)
# 查看训练数据各列的标准差
scaler.scale_
# 查看训练数据各列的均值
scaler.mean_
# 查看训练数据各列的方差
scaler.var_
# 总共有效的训练数据条数
scaler.n_samples_seen_
# 利用均值和方差对训练集进行标准化处理
scaler.transform(X)
0-1标准化的评估器实现方法
from sklearn.preprocessing import MinMaxScaler
#然后导入数据,进行训练
X = np.arange(15).reshape(5, 3)
scaler = MinMaxScaler()
scaler.fit_transform(X)
归一化Normalization
和标准化不同,sklearn中的归一化特指将单个样本(一行数据)放缩为单位范数(1范数或者2范数为单位范数)的过程,归一化也有函数实现和评估器实现两种方法。
此前我们曾解释到关于范数的基本概念,假设向量
x
=
[
x
1
,
x
2
,
.
.
.
,
x
n
]
T
x = [x_1, x_2, ..., x_n]^T
x=[x1,x2,...,xn]T,则向量x的1-范数的基本计算公式为:
∣
∣
x
∣
∣
1
=
∣
x
1
∣
+
∣
x
2
∣
+
.
.
.
+
∣
x
n
∣
||x||_1 = |x_1|+|x_2|+...+|x_n|
∣∣x∣∣1=∣x1∣+∣x2∣+...+∣xn∣
即各分量的绝对值之和。而向量x的2-范数计算公式为:
∣
∣
x
∣
∣
2
=
(
∣
x
1
∣
2
+
∣
x
2
∣
2
+
.
.
.
+
∣
x
n
∣
2
)
||x||_2=\sqrt{(|x_1|^2+|x_2|^2+...+|x_n|^2)}
∣∣x∣∣2=(∣x1∣2+∣x2∣2+...+∣xn∣2)
我们可以调用评估器来实现上述过程
from sklearn.preprocessing import Normalizer
#导入数据,进行训练
X = np.arange(15).reshape(5, 3)
# L2 (默认)
normlize = Normalizer()
normlize.fit_transform(X)
# L1
normlize = Normalizer(norm='l1')
normlize.fit_transform(X)