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_
等于None
当with_std=False
.Added in version 0.17: scale_
- mean_nd形状数组(n_features,)或无
训练集中每个特征的平均值。等于
None
当with_mean=False
和with_std=False
.- var_nd形状数组(n_features,)或无
训练集中每个特征的方差。用于计算
scale_
.等于None
当with_mean=False
和with_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
电话
注意到
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)[源代码]#
适应数据,然后对其进行转换。
适合变压器
X
和y
具有可选参数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_features
是None
那么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”},默认=无
配置输出
transform
和fit_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对象
更新的对象。