Z-Score是非常常用的规范化的方法,在模型训练的过程中,有两种方法可以实现不同目的的Z-Score:
- 同一批数据(例如单纯的对数据进行转换)
from sklearn.preprocessing import scale
import numpy as np
x = np.random.randint(0, 100, size=(3, 5))
x_norm = scale(x)
该方法的目的仅仅是用于计算单个数据集x的zscore,遇到不同的数据集(例如训练集与测试集)计算的zscore可能存在偏差。
- 不同数据(例如分别规范化训练集与测试集)
from sklearn.preprocessing import StandardScaler
import numpy as np
x = np.random.randint(0, 100, size=(3, 5))
y = np.random.randint(0, 100, size=(6, 5))
normFunc = StandardScaler()
normFunc.fit(x)
x_norm = normFunc.transform(x)
y_norm = normFunc.transform(y)
可以明显的看出,该方法过程先是用数据集x“训练”了一个规范化的函数,按照zscore的定义而言就是计算了x的均值和标准差。随后再通过该函数将x与y分别转换成zscore。
在模型训练的过程中,应该使用这种方法对数据进行规范化。