scale#

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

沿任何轴标准化数据集。

以均值为中心并按分量缩放至单位方差。

用户指南 中阅读更多内容。

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

要居中和缩放的数据。

axis{0, 1}, default=0

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

with_meanbool, default=True

如果为 True,则在缩放之前居中数据。

with_stdbool, default=True

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

copy布尔值, 默认为 True

如果为 False,则尝试避免复制并将数据就地缩放。这不能保证始终可以就地完成;例如,如果数据是具有 int 数据类型的 numpy 数组,则即使 copy=False 也会返回副本。

返回:
X_tr{ndarray, sparse matrix} of shape (n_samples, n_features)

转换后的数据。

另请参阅

StandardScaler

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

注意事项

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

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

为避免内存复制,调用者应传入 CSC 矩阵。

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

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

有关不同缩放器、变换器和归一器的比较,请参阅:比较不同缩放器对异常值数据的效果

警告

数据泄露风险

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