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均值和单位方差的高斯),它们可能会表现不好。

例如,学习算法的目标函数中使用的许多元素(例如支持向量机的RBS核或线性模型的L1和L2正规化器)假设所有特征都以0为中心,并且具有相同顺序的方差。如果一个特征的方差比其他特征大几个数量级,它可能会主导目标函数,并使估计器无法像预期的那样正确地从其他特征中学习。

StandardScaler 对异常值敏感,并且在存在异常值的情况下,特征的扩展可能会有所不同。有关可视化示例,请参阅 Compare StandardScaler with other scalers .

此缩放器还可以通过以下方式应用于稀疏CSR或CSC矩阵 with_mean=False 以避免打破数据的稀疏结构。

阅读更多的 User Guide .

参数:
copy布尔,默认=True

如果为假,请尝试避免副本并进行就地扩展。并不能保证始终就地工作;例如,如果数据不是NumPy数组或scipy.sparse CSR矩阵,则仍然可能返回副本。

with_mean布尔,默认=True

如果为True,请在缩放之前将数据集中在中心。当在稀疏矩阵上尝试时,这不起作用(并且会引发异常),因为将它们居中需要构建一个密集矩阵,在常见的用例中,该矩阵可能太大而无法容纳内存。

with_std布尔,默认=True

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

属性:
scale_nd形状数组(n_features,)或无

每个特征对数据进行相对缩放,以实现零均值和单位方差。通常这是通过以下方式计算的 np.sqrt(var_) .如果方差为零,则无法实现单位方差,并且数据保持原样,给出比例因子1。 scale_ 等于 Nonewith_std=False .

Added in version 0.17: scale_

mean_nd形状数组(n_features,)或无

训练集中每个特征的平均值。等于 Nonewith_mean=Falsewith_std=False .

var_nd形状数组(n_features,)或无

训练集中每个特征的方差。用于计算 scale_ .等于 Nonewith_mean=Falsewith_std=False .

n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

n_samples_seen_int或ndArray形状(n_features,)

估计器为每个特征处理的样本数。如果没有缺失的样本, n_samples_seen 将是一个integer,否则将是dype int的数组。如果 sample_weights 使用它将是一个浮点数(如果没有丢失数据)或一个d类型浮点数数组,将迄今为止看到的权重相加。将在新电话时重置以适应,但在整个范围内增加 partial_fit 电话

参见

scale

没有估计器API的等效功能。

PCA

使用“RST = 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)[源代码]#

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

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

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

y没有一

忽视

sample_weight形状类似数组(n_samples,),默认=无

每个样本的单独重量。

Added in version 0.24: 参数 sample_weight 支持StandardScaler。

返回:
self对象

安装了scaler。

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

适应数据,然后对其进行转换。

适合变压器 Xy 具有可选参数 fit_params 并返回的转换版本 X .

参数:
X形状类似阵列(n_samples,n_features)

输入样本。

y形状为(n_samples,)或(n_samples,n_outputs)的阵列状, 默认值=无

目标值(无监督转换)。

**fit_paramsdict

其他适合参数。

返回:
X_newndray形状数组(n_samples,n_features_new)

变形的数组。

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

获取用于转换的输出要素名称。

参数:
input_features字符串或无的类数组,默认=无

输入功能。

  • 如果 input_featuresNone 那么 feature_names_in_ 在中用作功能名称。如果 feature_names_in_ 未定义,则生成以下输入要素名称: ["x0", "x1", ..., "x(n_features_in_ - 1)"] .

  • 如果 input_features 是一个类似阵列的,那么 input_features 必须匹配 feature_names_in_ 如果 feature_names_in_ 是定义的。

返回:
feature_names_out字符串对象的nd数组

与输入功能相同。

get_metadata_routing()[源代码]#

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

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

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

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

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

将数据缩放到原始表示。

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

用于沿要素轴缩放的数据。

copybool,默认值=无

复制或不复制输入X。

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

变形的数组。

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

在线计算X上的平均值和标准差,以便稍后进行缩放。

所有X都作为单个批次处理。这适用于以下情况: fit 由于大量的 n_samples 或者因为X是从连续流中读取的。

增量平均值和std的算法在Chan,Tony F.,的方程1.5a,b中给出,吉恩·H戈卢布和兰德尔·J·勒维克。“计算样本方差的算法:分析和建议。“《美国统计学家》37.3(1983):242-247:

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

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

y没有一

忽视

sample_weight形状类似数组(n_samples,),默认=无

每个样本的单独重量。

Added in version 0.24: 参数 sample_weight 支持StandardScaler。

返回:
self对象

安装了scaler。

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

请求元数据传递给 fit

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 fit 如果提供的话。如果未提供元数据,则会忽略请求。

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

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

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

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

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 fit .

返回:
self对象

更新的对象。

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

请求元数据传递给 inverse_transform

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 inverse_transform 如果提供的话。如果未提供元数据,则会忽略请求。

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

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

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

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

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
copy字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 copy 参数 inverse_transform .

返回:
self对象

更新的对象。

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

设置输出容器。

看到 介绍 set_output API 了解如何使用API的示例。

参数:
transform{“默认”,“pandas”,“polars”},默认=无

配置输出 transformfit_transform .

  • "default" :Transformer的默认输出格式

  • "pandas" :DataFrame输出

  • "polars" :两极输出

  • None :转换配置不变

Added in version 1.4: "polars" 添加了选项。

返回:
self估计器实例

估计实例。

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

设置此估计器的参数。

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

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

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

请求元数据传递给 partial_fit

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 partial_fit 如果提供的话。如果未提供元数据,则会忽略请求。

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

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

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

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

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 partial_fit .

返回:
self对象

更新的对象。

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

请求元数据传递给 transform

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 transform 如果提供的话。如果未提供元数据,则会忽略请求。

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

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

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

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

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
copy字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 copy 参数 transform .

返回:
self对象

更新的对象。

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

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

参数:
X{类阵列、形状稀疏矩阵(n_samples,n_features)

用于沿要素轴缩放的数据。

copybool,默认值=无

复制或不复制输入X。

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

变形的数组。