概念
zscore归一化:
minmax标准化
python实现
from sklearn import preprocessing
from sklearn.preprocessing import StandardScaler
import numpy as np
# 数据
x = np.array([[1.,-1.,2.],
[2.,0.,0.],
[0.,1.,-1.]])
print('----------------minmaxscaler标准化-------------')
# 调用minmaxscaler标准化
min_max_scaler = preprocessing.MinMaxScaler()
x_minmax = min_max_scaler.fit_transform(x)
print(x_minmax)
# 手写minmaxscaler标准化
def MinMaxScaler(data):
return (data-data.min(axis = 0))/(data.max(axis=0)-data.min(axis=0))
print(MinMaxScaler(x))
print('----------------zscore归一化-------------')
# 手写ZScoreScaler归一化
def ZScoreScaler(data):
return (data-data.mean(axis = 0))/data.std(axis = 0)
print(ZScoreScaler(x))
# 调库
zscaler = StandardScaler ()
x_zscore = zscaler.fit_transform(x)
print(x_zscore)
对训练集和测试集进行标准化
这边以z-score归一化为例。
对训练集,计算训练集中每一列属性(即x)的均值和标准差,目标y不需要标准化。获得均值和标准差后,对属性进行标准化转换。
对测试集,根据训练集上计算得到的均值和标准差,将测试集中的每个特征进行标准化转换。这确保了测试集的特征具有与训练集相同的尺度,以便模型在测试数据上能够正确预测。
python实现
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train) # 对训练集进行标准化处理,并计算标准化参数(均值和标准差)
X_test = scaler.transform(X_test) # 将标准化参数应用到测试集上,以保持一致性