scale#

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

沿任意轴标准化数据集。

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

详情请参阅用户指南

参数
X{类数组, 稀疏矩阵} 形状为 (n_samples, n_features)

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

axis{0, 1},默认值=0

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

with_mean布尔值,默认值=True

如果为 True,则在缩放前将数据中心化。

with_std布尔值,默认值=True

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

copy布尔值,默认值=True

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

返回
X_tr{ndarray, 稀疏矩阵} 形状为 (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。一个常见的错误是在将数据分割为训练集和测试集之前将其应用于整个数据集。这会使模型评估产生偏差,因为信息会从测试集泄露到训练集。通常,我们建议在管道中使用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]])