幂变换器#
- class sklearn.preprocessing.PowerTransformer(method='yeo-johnson', *, standardize=True, copy=True)[source]#
对特征应用幂变换,使数据更接近高斯分布。
幂变换是一系列参数化单调变换,用于使数据更接近高斯分布。这对于处理异方差性(方差不恒定)或需要正态性的其他情况非常有用。
目前,PowerTransformer 支持 Box-Cox 变换和 Yeo-Johnson 变换。通过最大似然法估计稳定方差和最小化偏斜的最佳参数。
Box-Cox 变换要求输入数据严格为正数,而 Yeo-Johnson 变换则支持正数和负数数据。
默认情况下,变换后的数据会应用零均值、单位方差归一化。
有关示例可视化,请参阅 比较 PowerTransformer 与其他缩放器。要查看 Box-Cox 和 Yeo-Johnson 变换对不同分布的影响,请参阅:将数据映射到正态分布。
在 用户指南 中了解更多信息。
0.20 版本中添加。
- 参数:
- 属性:
备注
NaN 被视为缺失值:在
fit
中被忽略,并在transform
中保留。参考文献
示例
>>> import numpy as np >>> from sklearn.preprocessing import PowerTransformer >>> pt = PowerTransformer() >>> data = [[1, 2], [3, 2], [4, 5]] >>> print(pt.fit(data)) PowerTransformer() >>> print(pt.lambdas_) [ 1.386... -3.100...] >>> print(pt.transform(data)) [[-1.316... -0.707...] [ 0.209... -0.707...] [ 1.106... 1.414...]]
- fit(X, y=None)[source]#
估计每个特征的最佳参数 lambda。
使用最大似然法独立估计每个特征上最小化偏斜的最佳 lambda 参数。
- 参数:
- X形状为 (n_samples, n_features) 的类数组
用于估计最佳变换参数的数据。
- yNone
忽略。
- 返回值:
- self对象
拟合的转换器。
- fit_transform(X, y=None)[source]#
将
PowerTransformer
拟合到X
,然后变换X
。- 参数:
- X形状为 (n_samples, n_features) 的类数组
用于估计最佳变换参数并使用幂变换进行变换的数据。
- y忽略
未使用,根据约定保留用于 API 一致性。
- 返回值:
- X_new形状为 (n_samples, n_features) 的 ndarray
变换后的数据。
- get_feature_names_out(input_features=None)[source]#
获取变换的输出特征名称。
- 参数:
- input_features字符串的类数组或 None,默认为 None
输入特征。
如果
input_features
为None
,则使用feature_names_in_
作为输入特征名称。如果feature_names_in_
未定义,则会生成以下输入特征名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]
。如果
input_features
是类数组,则如果feature_names_in_
已定义,则input_features
必须与feature_names_in_
匹配。
- 返回值:
- feature_names_out字符串对象的 ndarray
与输入特征相同。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看 用户指南,了解路由机制的工作原理。
- 返回值:
- routingMetadataRequest
一个封装路由信息的
MetadataRequest
。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,则将返回此估计器和包含的子对象(它们是估计器)的参数。
- 返回值:
- paramsdict
参数名称及其值的映射。
- inverse_transform(X)[source]#
使用拟合的 lambda 应用反幂变换。
Box-Cox 变换的反变换由以下公式给出:
if lambda_ == 0: X = exp(X_trans) else: X = (X_trans * lambda_ + 1) ** (1 / lambda_)
Yeo-Johnson 变换的反变换由以下公式给出:
if X >= 0 and lambda_ == 0: X = exp(X_trans) - 1 elif X >= 0 and lambda_ != 0: X = (X_trans * lambda_ + 1) ** (1 / lambda_) - 1 elif X < 0 and lambda_ != 2: X = 1 - (-(2 - lambda_) * X_trans + 1) ** (1 / (2 - lambda_)) elif X < 0 and lambda_ == 2: X = 1 - exp(-X_trans)
- 参数:
- X形状为 (n_samples, n_features) 的类数组
变换后的数据。
- 返回值:
- Xndarray of shape (n_samples, n_features)
原始数据。
- set_output(*, transform=None)[source]#
设置输出容器。
参见 Introducing the set_output API,了解如何使用此 API 的示例。
- 参数:
- transform{“default”, “pandas”, “polars”}, default=None
配置
transform
和fit_transform
的输出。"default"
: 变换器的默认输出格式"pandas"
: DataFrame 输出"polars"
: Polars 输出None
: 变换配置保持不变
Added in version 1.4:
"polars"
选项已添加。
- 返回值:
- selfestimator instance
估计器实例。