PowerTransformer#
- class sklearn.preprocessing.PowerTransformer(method='yeo-johnson', *, standardize=True, copy=True)[source]#
按特征应用幂转换以使数据更像高斯分布。
幂变换(Power transform)是一系列参数化的单调变换,用于使数据更接近高斯分布。这对于解决与异方差性(非恒定方差)相关的问题,或需要正态性的其他情况非常有用。
目前,PowerTransformer 支持 Box-Cox 变换和 Yeo-Johnson 变换。通过最大似然估计来确定稳定方差和最小化偏度的最优参数。
Box-Cox 要求输入数据严格为正值,而 Yeo-Johnson 支持正值或负值数据。
默认情况下,会对变换后的数据应用零均值、单位方差归一化。
有关示例可视化,请参阅 将 PowerTransformer 与其他缩放器进行比较。要查看 Box-Cox 和 Yeo-Johnson 变换对不同分布的影响,请参阅:将数据映射到正态分布。
更多信息请参阅 用户指南。
0.20 版本新增。
- 参数:
- 属性:
另请参阅
power_transform不包含估算器 API 的等效函数。
QuantileTransformer使用参数
output_distribution='normal'将数据映射到标准正态分布。
注意事项
NaNs 被视为缺失值:在
fit中被忽略,在transform中被保留。References
[1]示例
>>> 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 参数。
- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
用于估计最优变换参数的数据。
- yNone
忽略。
- 返回:
- selfobject
已拟合的转换器。
- fit_transform(X, y=None)[source]#
将
PowerTransformer拟合到X,然后变换X。- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
用于估计最优变换参数和使用幂变换进行变换的数据。
- y被忽略
未使用,按照惯例为保持 API 一致性而存在。
- 返回:
- X_newndarray of shape (n_samples, n_features)
转换后的数据。
- get_feature_names_out(input_features=None)[source]#
获取转换的输出特征名称。
- 参数:
- 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()[source]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- inverse_transform(X)[source]#
使用拟合的 lambdas 应用逆幂变换。
Box-Cox 变换的逆变换由下式给出
if lambda_ == 0: X_original = exp(X_trans) else: X_original = (X * lambda_ + 1) ** (1 / lambda_)
Yeo-Johnson 变换的逆变换由下式给出
if X >= 0 and lambda_ == 0: X_original = exp(X) - 1 elif X >= 0 and lambda_ != 0: X_original = (X * lambda_ + 1) ** (1 / lambda_) - 1 elif X < 0 and lambda_ != 2: X_original = 1 - (-(2 - lambda_) * X + 1) ** (1 / (2 - lambda_)) elif X < 0 and lambda_ == 2: X_original = 1 - exp(-X)
- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
转换后的数据。
- 返回:
- X_original形状为 (n_samples, n_features) 的 ndarray
原始数据。
- set_output(*, transform=None)[source]#
设置输出容器。
有关如何使用 API 的示例,请参阅引入 set_output API。
- 参数:
- transform{“default”, “pandas”, “polars”}, default=None
配置
transform和fit_transform的输出。"default": 转换器的默认输出格式"pandas": DataFrame 输出"polars": Polars 输出None: 转换配置保持不变
1.4 版本新增: 添加了
"polars"选项。
- 返回:
- selfestimator instance
估计器实例。