sklearnpreprocessing中scale和standardscaler的区别是什么

前言: 想要给一组特征集进行标准化处理的时候,发现以下两者都可以。

import sklearn.preprocessing
preprocessing.scale(X)  # X是特征集合
from sklearn.processing import StandardScaler
StandardScaler().fit_transform(X)

看了某篇文章知道:
两者都是标准化特征处理的方法,都是使特征集合每一个元素=(自己-该列的均值)/该列的标准差
也就是下面手算的代码:

X_mean = np.mean(X,axis= 0)
X_std = np.std(X,axis= 0)
result = (X-X_mean)/X_std

但是: 在进行数据标准化时,我们通常有两种方法

  • 将测试集和训练集的特征集放在一起,用整体的均值和标准差来进行标准化处理
  • 先算训练集的均值和标准差,然后用它们来分别对训练集和测试集进行标准化处理

在实际应用场景中,第二种情况比较常见,所以要先得到训练集的均值和标准差
故,可以先通过:

Scaler = StandardScaler().fit(X_train) 

得到训练集的均值和标准差
再通过:

Scaler.transform(X_train)
Scaler.transform(X_test)

来分别对训练集和测试集进行标准化处理。

发布了45 篇原创文章 · 获赞 0 · 访问量 977

猜你喜欢

转载自blog.csdn.net/jokerxsy/article/details/104868025