缩放#

sklearn.preprocessing.scale(X, *, axis=0, with_mean=True, with_std=True, copy=True)[source]#

沿任何轴标准化数据集。

中心化到均值,并按分量缩放至单位方差。

更多信息请阅读 用户指南

参数:
X形状为 (n_samples, n_features) 的 {array-like, sparse matrix}

要进行中心化和缩放的数据。

axis{0, 1}, default=0

用于计算均值和标准差的轴。如果为 0,则独立地标准化每个特征;否则(如果为 1),则标准化每个样本。

with_meanbool,默认值=True

如果为 True,则在缩放之前对数据进行中心化。

with_stdbool,默认值=True

如果为 True,则将数据缩放至单位方差(或等效地,单位标准差)。

copybool,默认值=True

如果为 False,则尝试避免复制并就地缩放。但这并非总是能保证就地操作;例如,如果数据是具有 int 数据类型的 numpy 数组,即使 copy=False,也会返回副本。

返回:
X_tr{ndarray,稀疏矩阵},形状为 (n_samples, n_features)

变换后的数据。

另请参见

标准化缩放器

使用 Transformer API 执行单位方差缩放(例如,作为预处理Pipeline的一部分)。

注释

此实现将拒绝对 scipy.sparse 矩阵进行中心化,因为它会使它们变为非稀疏矩阵,并可能因内存耗尽问题而导致程序崩溃。

相反,调用者应显式设置with_mean=False(在这种情况下,只会对 CSC 矩阵的特征执行方差缩放),或者如果他/她期望具体化后的稠密数组适合内存,则调用X.toarray()

为了避免内存复制,调用者应该传递一个 CSC 矩阵。

NaN 被视为缺失值:在计算统计数据时被忽略,并在数据转换过程中保留。

我们使用标准差的有偏估计量,相当于numpy.std(x, ddof=0)。请注意,ddof的选择不太可能影响模型性能。

有关不同缩放器、转换器和标准化器的比较,请参见:比较不同缩放器对异常值数据的的影响

警告

数据泄露风险

除非您知道自己在做什么,否则请勿使用scale。一个常见的错误是在拆分为训练集和测试集之前将其应用于整个数据。这将使模型评估产生偏差,因为信息会从测试集泄漏到训练集。一般来说,我们建议在StandardScaler中使用Pipeline以防止大多数数据泄漏风险:pipe = make_pipeline(StandardScaler(), LogisticRegression())

示例

>>> from sklearn.preprocessing import scale
>>> X = [[-2, 1, 2], [-1, 0, 1]]
>>> scale(X, axis=0)  # scaling each column independently
array([[-1.,  1.,  1.],
       [ 1., -1., -1.]])
>>> scale(X, axis=1)  # scaling each row independently
array([[-1.37...,  0.39...,  0.98...],
       [-1.22...,  0.     ,  1.22...]])