StandardScaler和scale均为Z-score标准化,即减去均值µ除以标准差σ
而在进行数据标准化的时候,通常有两种方式:
1)将训练集和测试集统一进行标准化处理,此时均值和方差为整个数据的均值和方差
2)得到训练集的均值和标准差,用测试集的数据减去训练集的均值除以训练集的标准差。
在结果上来看,两种方法区别不大,不过第二种更偏向与实际应用场合。
StandardScaler可以预先生成规则,即生成训练集的均值与标准差,然后利用训练集的均值和标准差去分别标准化训练集和测试集!
有点像概率论里的,用训练集均值代替期望的感觉!
from sklearn.preprocessing import StandardScaler zscore=StandardScaler().fit(raw_train_data) # 按原始训练集生成规则,即训练的均值和标准差 train_data=zscore.transform(raw_train_data) # 讲规则应用到训练集 test_data=zscore.transform(raw_test_data) # 将规则应用到测试集