sklearn.preprocessing 提供了多个数据预处理类和方法,将原始特征向量转换为更适合于下游模型的表示。
Standardization 标准化
对训练样本中的每个属性统计计算均值和方差,然后对需要标准化的数据进行处理:
x
x
x
from sklearn import preprocessing
import numpy as np
X_train = np.array([[1., -1., 2.], [2., 0., 0.], [0., 1., -1.]])
scaler = preprocessing.StandardScaler().fit(X_train)
print(scaler)
print("均值:", scaler.mean_)
print("方差:", scaler.scale_)
X_scaled = scaler.transform(X_train)
print("转换后的数据", X_scaled)
输出:
StandardScaler(copy=True, with_mean=True, with_std=True)
均值: [1. 0. 0.33333333]
方差: [0.81649658 0.81649658 1.24721913]
转换后的数据:
[[ 0. -1.22474487 1.33630621]
[ 1.22474487 0. -0.26726124]
[-1.22474487 1.22474487 -1.06904497]]
用训练集得到的scaler ,通过transform 方法来标准化测试集。用inverse_transform 可还原得到原来的数据
X_test = np.array([[4., -4., 20.], [8., 10., 10.], [10., 11., -11.]])
X_scaled = scaler.transform(X_test)
print("转换后的数据:\n", X_scaled)
X_ori = scaler.inverse_transform(X_scaled)
print("还原数据:\n", X_ori)
转换后的数据:
[[ 3.67423461 -4.89897949 15.76841327]
[ 8.5732141 12.24744871 7.75057602]
[11.02270384 13.47219359 -9.08688223]]
还原数据:
[[ 4. -4. 20.]
[ 8. 10. 10.]
[ 10. 11. -11.]]
|