scale#
- sklearn.preprocessing.scale(X, *, axis=0, with_mean=True, with_std=True, copy=True)#
标准化一个数据集沿着任意轴。
中心化到均值并按组件比例缩放到单位方差。
更多信息请参阅 用户指南 。
- Parameters:
- X{array-like, sparse matrix} 形状 (n_samples, n_features)
要中心化和缩放的数据。
- axis{0, 1}, 默认=0
用于计算均值和标准差的轴。如果为0,则独立标准化每个特征,否则(如果为1)标准化每个样本。
- with_meanbool, 默认=True
如果为True,在缩放前中心化数据。
- with_stdbool, 默认=True
如果为True,将数据缩放到单位方差(或等效地,单位标准差)。
- copybool, 默认=True
如果为False,尝试避免复制并在原地缩放。 这不能保证总是原地工作;例如,如果数据是一个int类型的numpy数组,即使copy=False也会返回一个副本。
- Returns:
- X_tr{ndarray, sparse matrix} 形状 (n_samples, n_features)
变换后的数据。
See also
StandardScaler
使用Transformer API执行缩放到单位方差(例如,作为预处理
Pipeline
的一部分)。
Notes
此实现将拒绝中心化scipy.sparse矩阵,因为这会使它们变得不稀疏,并且可能会因内存耗尽问题导致程序崩溃。
相反,调用者应显式设置
with_mean=False
(在这种情况下,仅对CSC矩阵的特征执行方差缩放)或调用X.toarray()
,如果他/她预计具体化的密集数组能适应内存。为了避免内存复制,调用者应传递一个CSC矩阵。
NaN被视为缺失值:在计算统计数据时被忽略,并在数据变换期间保持不变。
我们使用有偏估计量来计算标准差,等效于
numpy.std(x, ddof=0)
。请注意,ddof
的选择不太可能影响模型性能。有关不同缩放器、变换器和规范化器的比较,请参见: 比较不同缩放器对含有异常值的数据的影响 。
Warning
数据泄露风险
除非你知道自己在做什么,否则不要使用
scale
。一个常见的错误是在拆分为训练集和测试集之前将其应用于整个数据。这将使模型评估产生偏差,因为信息会从测试集泄露到训练集。 一般来说,我们建议在 Pipeline 中使用StandardScaler
,以防止大多数数据泄露风险:pipe = make_pipeline(StandardScaler(), LogisticRegression())
。Examples
>>> from sklearn.preprocessing import scale >>> X = [[-2, 1, 2], [-1, 0, 1]] >>> scale(X, axis=0) # 独立缩放每一列 array([[-1., 1., 1.], [ 1., -1., -1.]]) >>> scale(X, axis=1) # 独立缩放每一行 array([[-1.37..., 0.39..., 0.98...], [-1.22..., 0. , 1.22...]])