StandardScaler#

class sklearn.preprocessing.StandardScaler(*, copy=True, with_mean=True, with_std=True)[源代码]#

通过移除均值并缩放为单位方差来标准化特征。

样本 x 的标准分数计算方法如下:

z = (x - u) / s

其中 u 是训练样本的均值,如果 with_mean=False 则为零;s 是训练样本的标准差,如果 with_std=False 则为一。

通过计算训练集中样本的相关统计数据,对每个特征独立进行中心化和缩放。然后存储均值和标准差,以便在之后使用 transform 应用于新数据。

数据集的标准化是许多机器学习估计器的常见要求:如果各个特征的分布大致不像标准正态分布(例如,均值为 0、方差为 1 的高斯分布),则它们的性能可能会变差。

例如,学习算法的目标函数中的许多元素(如支持向量机的 RBF 核或线性模型的 L1 和 L2 正则化项)都假定所有特征都以 0 为中心,并且方差在同一数量级。如果一个特征的方差比其他特征大几个数量级,它可能会主导目标函数,导致估计器无法正确地从其他特征中学习。

StandardScaler 对异常值敏感,并且在存在异常值的情况下,特征可能会以不同的比例进行缩放。有关示例可视化,请参见 Compare StandardScaler with other scalers

此缩放器也可以应用于稀疏的 CSR 或 CSC 矩阵,只需将 with_mean=False 传递即可,以避免破坏数据的稀疏结构。

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

参数:
copy布尔值, 默认为 True

如果为 False,则尝试避免复制并执行原地缩放。这不保证总是能原地完成;例如,如果数据不是 NumPy 数组或 scipy.sparse CSR 矩阵,仍可能返回副本。

with_meanbool, default=True

如果为 True,则在缩放之前对数据进行中心化。当尝试在稀疏矩阵上执行此操作时,不会成功(并会引发异常),因为对稀疏矩阵进行中心化需要构建一个密集矩阵,而在常见用例中,该矩阵可能大到无法放入内存。

with_stdbool, default=True

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

属性:
scale_ndarray of shape (n_features,) or None

用于实现零均值和单位方差的数据的每个特征的相对缩放因子。通常使用 np.sqrt(var_) 计算。如果方差为零,我们无法实现单位方差,数据将保持不变,缩放因子为 1。当 with_std=False 时,scale_None

Added in version 0.17: scale_

mean_ndarray of shape (n_features,) or None

训练集中每个特征的均值。当 with_mean=Falsewith_std=False 时,该值等于 None

var_ndarray of shape (n_features,) or None

训练集中每个特征的方差。用于计算 scale_。当 with_mean=Falsewith_std=False 时,该值等于 None

n_features_in_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本新增。

n_samples_seen_int or ndarray of shape (n_features,)

估计器为每个特征处理的样本数量。如果没有缺失样本,n_samples_seen 将是一个整数,否则它将是一个 dtype 为 int 的数组。如果使用了 sample_weight,它将是一个浮点数(如果没有缺失数据)或一个 dtype 为 float 的数组,其中包含到目前为止已见的权重之和。每次调用 fit 时都会重置,但在多次调用 partial_fit 时会累加。

另请参阅

scale

不包含估算器 API 的等效函数。

PCA

使用 'whiten=True' 进一步去除特征之间的线性相关性。

注意事项

NaN 被视为缺失值:在拟合过程中忽略,在转换过程中保持。

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

示例

>>> from sklearn.preprocessing import StandardScaler
>>> data = [[0, 0], [0, 0], [1, 1], [1, 1]]
>>> scaler = StandardScaler()
>>> print(scaler.fit(data))
StandardScaler()
>>> print(scaler.mean_)
[0.5 0.5]
>>> print(scaler.transform(data))
[[-1. -1.]
 [-1. -1.]
 [ 1.  1.]
 [ 1.  1.]]
>>> print(scaler.transform([[2, 2]]))
[[3. 3.]]
fit(X, y=None, sample_weight=None)[源代码]#

计算用于后续缩放的均值和标准差。

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

用于计算用于沿特征轴的后续缩放的均值和标准差的数据。

yNone

忽略。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

每个样本的个体权重。

Added in version 0.24: StandardScaler 支持参数 sample_weight

返回:
selfobject

拟合好的缩放器。

fit_transform(X, y=None, **fit_params)[源代码]#

拟合数据,然后对其进行转换。

使用可选参数 fit_params 将转换器拟合到 Xy,并返回 X 的转换版本。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

输入样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象,默认=None

目标值(对于无监督转换,为 None)。

**fit_paramsdict

额外的拟合参数。仅当估计器在其 fit 方法中接受额外的参数时才传递。

返回:
X_newndarray array of shape (n_samples, n_features_new)

转换后的数组。

get_feature_names_out(input_features=None)[源代码]#

获取转换的输出特征名称。

参数:
input_featuresarray-like of str or None, default=None

输入特征。

  • 如果 input_featuresNone,则使用 feature_names_in_ 作为输入特征名称。如果 feature_names_in_ 未定义,则生成以下输入特征名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]

  • 如果 input_features 是 array-like,则如果定义了 feature_names_in_input_features 必须与 feature_names_in_ 匹配。

返回:
feature_names_outstr 对象的 ndarray

与输入特征相同。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsdict

参数名称映射到其值。

inverse_transform(X, copy=None)[源代码]#

将数据缩放回原始表示。

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

用于沿特征轴缩放的数据。

copybool, default=None

是否复制输入 X

返回:
X_original形状为 (n_samples, n_features) 的 {ndarray, sparse matrix}

转换后的数组。

partial_fit(X, y=None, sample_weight=None)[源代码]#

在线计算 X 的均值和标准差,用于后续缩放。

X 的全部内容将作为一个批次进行处理。这适用于 fit 由于 n_samples 数量过大或 X 从连续流读取而不可行的情况。

增量均值和标准差的算法见 Chan, Tony F., Gene H. Golub, and Randall J. LeVeque. “Algorithms for computing the sample variance: Analysis and recommendations.” The American Statistician 37.3 (1983): 242-247 中的方程 1.5a,b。

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

用于计算用于沿特征轴的后续缩放的均值和标准差的数据。

yNone

忽略。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

每个样本的个体权重。

Added in version 0.24: StandardScaler 支持参数 sample_weight

返回:
selfobject

拟合好的缩放器。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') StandardScaler[源代码]#

配置是否应请求元数据以传递给 fit 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True:请求元数据,如果提供则传递给 fit。如果未提供元数据,则忽略该请求。

  • False:不请求元数据,元估计器不会将其传递给 fit

  • None:不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

在版本 1.3 中新增。

参数:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

fit 方法中 sample_weight 参数的元数据路由。

返回:
selfobject

更新后的对象。

set_inverse_transform_request(*, copy: bool | None | str = '$UNCHANGED$') StandardScaler[源代码]#

配置是否应请求将元数据传递给 inverse_transform 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则将其传递给 inverse_transform。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 inverse_transform

  • None:不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

在版本 1.3 中新增。

参数:
copystr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

元数据路由 inverse_transformcopy 参数的元数据路由。

返回:
selfobject

更新后的对象。

set_output(*, transform=None)[源代码]#

设置输出容器。

有关如何使用 API 的示例,请参阅引入 set_output API

参数:
transform{“default”, “pandas”, “polars”}, default=None

配置 transformfit_transform 的输出。

  • "default": 转换器的默认输出格式

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 转换配置保持不变

1.4 版本新增: 添加了 "polars" 选项。

返回:
selfestimator instance

估计器实例。

set_params(**params)[源代码]#

设置此估计器的参数。

此方法适用于简单的估计器以及嵌套对象(如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。

set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') StandardScaler[源代码]#

Configure whether metadata should be requested to be passed to the partial_fit method.

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True: metadata is requested, and passed to partial_fit if provided. The request is ignored if metadata is not provided.

  • False: metadata is not requested and the meta-estimator will not pass it to partial_fit.

  • None:不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

在版本 1.3 中新增。

参数:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in partial_fit.

返回:
selfobject

更新后的对象。

set_transform_request(*, copy: bool | None | str = '$UNCHANGED$') StandardScaler[源代码]#

配置是否应请求元数据以传递给 transform 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True:请求元数据,如果提供则传递给 transform。如果未提供元数据,则忽略该请求。

  • False:不请求元数据,并且元估计器不会将其传递给 transform

  • None:不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

在版本 1.3 中新增。

参数:
copystr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

transformcopy 参数的元数据路由。

返回:
selfobject

更新后的对象。

transform(X, copy=None)[源代码]#

通过中心化和缩放执行标准化。

参数:
X{array-like, sparse matrix of shape (n_samples, n_features)

用于沿特征轴缩放的数据。

copybool, default=None

是否复制输入 X。

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

转换后的数组。