Scikit-learn:preprocessing.scale()与preprocessing.StandardScalar()的区别

24
我理解缩放(scaling)是指将平均值居中(mean=0),使方差为单位方差(variance=1)。
但是,在scikit-learn中,preprocessing.scale(x)和preprocessing.StandardScaler()有什么区别呢?
2个回答

34

这两个方法的作用是相同的,但:

  • preprocessing.scale(x) 是一个函数,用于转换数据
  • preprocessing.StandardScaler() 是支持Transformer API的类

即使我不需要使用StandardScaler()提供的inverse_transform等功能,我仍然会选择使用后者。

摘自文档:

函数scale为单个类似数组的数据集提供了一个快速简便的操作方式。

预处理模块还提供了一个实用程序类StandardScaler,该类实现了Transformer API,以计算训练集上的均值和标准差,以便稍后在测试集上重新应用相同的转换。 因此,此类适用于sklearn.pipeline.Pipeline的早期步骤


-1

我的理解是,scale会将数据转换为数据的最小-最大范围,而standardscaler会将数据转换为[-1,1]范围内的数据。


请看一下已经被接受的答案,这是一个很好的解释。 - L. Guthardt
错误的。它们完全一样! - seralouk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接