PowerTransformer#
- class sklearn.preprocessing.PowerTransformer(method='yeo-johnson', *, standardize=True, copy=True)#
应用幂变换特征以使数据更接近高斯分布。
幂变换是一组参数化的、单调的变换,应用于使数据更接近高斯分布。这对于解决异方差性(非恒定方差)或其他需要正态性的情况非常有用。
目前,PowerTransformer 支持 Box-Cox 变换和 Yeo-Johnson 变换。通过最大似然估计来估计稳定方差和最小化偏斜的最佳参数。
Box-Cox 要求输入数据为严格正数,而 Yeo-Johnson 支持正数和负数数据。
默认情况下,对变换后的数据应用零均值、单位方差的归一化。
有关示例可视化,请参阅 Compare PowerTransformer with other scalers 。要查看 Box-Cox 和 Yeo-Johnson 变换对不同分布的影响,请参阅: 将数据映射到正态分布 。
更多信息请参阅 User Guide 。
Added in version 0.20.
- Parameters:
- Attributes:
See also
power_transform
等效函数,不带估计器 API。
QuantileTransformer
将数据映射到标准正态分布,参数
output_distribution='normal'
。
Notes
NaNs 被视为缺失值:在
fit
中忽略,在transform
中保留。References
[1]Examples
>>> 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)#
估计每个特征的最佳参数lambda。
使用最大似然估计每个特征独立地估计最小化偏度的最佳lambda参数。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
用于估计最佳变换参数的数据。
- yNone
忽略。
- Returns:
- selfobject
拟合的变换器。
- fit_transform(X, y=None)#
拟合
PowerTransformer
到X
,然后转换X
。- Parameters:
- X形状为 (n_samples, n_features) 的类数组
用于估计最优变换参数的数据,并使用幂变换进行转换。
- y忽略
不使用,为了保持API一致性而存在。
- Returns:
- X_new形状为 (n_samples, n_features) 的 ndarray
转换后的数据。
- get_feature_names_out(input_features=None)#
获取变换后的输出特征名称。
- Parameters:
- input_features字符串数组或None,默认=None
输入特征。
如果
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_
已定义)。
- Returns:
- feature_names_out字符串对象的ndarray
与输入特征相同。
- get_metadata_routing()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
MetadataRequest
封装的 路由信息。
- get_params(deep=True)#
获取此估计器的参数。
- Parameters:
- deepbool, 默认=True
如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- inverse_transform(X)#
应用使用拟合的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)
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
变换后的数据。
- Returns:
- X形状为 (n_samples, n_features) 的 ndarray
原始数据。
- set_output(*, transform=None)#
设置输出容器。
请参阅 介绍 set_output API 以了解如何使用API的示例。
- Parameters:
- transform{“default”, “pandas”, “polars”}, 默认=None
配置
transform
和fit_transform
的输出。"default"
: 转换器的默认输出格式"pandas"
: DataFrame 输出"polars"
: Polars 输出None
: 转换配置不变
Added in version 1.4:
"polars"
选项已添加。
- Returns:
- self估计器实例
估计器实例。
- set_params(**params)#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有形式为<component>__<parameter>
的参数,以便可以更新嵌套对象的每个组件。- Parameters:
- **paramsdict
估计器参数。
- Returns:
- selfestimator instance
估计器实例。
- transform(X)#
应用幂变换到每个特征,使用拟合的lambdas。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
使用幂变换的数据。
- Returns:
- X_trans形状为 (n_samples, n_features) 的 ndarray
变换后的数据。