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=False且with_std=False时,该值等于None。- var_ndarray of shape (n_features,) or None
训练集中每个特征的方差。用于计算
scale_。当with_mean=False且with_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时会累加。
注意事项
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将转换器拟合到X和y,并返回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_features为None,则使用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_transform中copy参数的元数据路由。
- 返回:
- selfobject
更新后的对象。
- set_output(*, transform=None)[源代码]#
设置输出容器。
有关如何使用 API 的示例,请参阅引入 set_output API。
- 参数:
- transform{“default”, “pandas”, “polars”}, default=None
配置
transform和fit_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_fitmethod.请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过
enable_metadata_routing=True启用了元数据路由(请参阅sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。每个参数的选项如下:
True: metadata is requested, and passed topartial_fitif provided. The request is ignored if metadata is not provided.False: metadata is not requested and the meta-estimator will not pass it topartial_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_weightparameter inpartial_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
transform中copy参数的元数据路由。
- 返回:
- selfobject
更新后的对象。