PowerTransformer#
- class sklearn.preprocessing.PowerTransformer(method='yeo-johnson', *, standardize=True, copy=True)[源]#
逐特征应用幂变换,使数据更接近高斯分布。
幂变换是一族参数化的单调变换,旨在使数据更接近高斯分布。这对于处理异方差性(非恒定方差)相关问题或需要正态性的其他情况很有用。
目前,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
中保留。参考文献
示例
>>> 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 参数。
- 参数:
- Xshape 为 (n_samples, n_features) 的类数组
用于估计最佳变换参数的数据。
- yNone
被忽略。
- 返回:
- self对象
已拟合的变换器。
- fit_transform(X, y=None)[源]#
将
PowerTransformer
拟合到X
,然后变换X
。- 参数:
- Xshape 为 (n_samples, n_features) 的类数组
用于估计最佳变换参数并使用幂变换进行变换的数据。
- y被忽略
未使用,根据约定用于保持 API 一致性。
- 返回:
- X_newshape 为 (n_samples, n_features) 的 ndarray
变换后的数据。
- get_feature_names_out(input_features=None)[源]#
获取变换的输出特征名称。
- 参数:
- input_featuresstr 的类数组或 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_outstr 对象的 ndarray
与输入特征相同。
- get_metadata_routing()[源]#
获取此对象的元数据路由。
请查阅 用户指南 了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest
。
- get_params(deep=True)[源]#
获取此估计器的参数。
- 参数:
- deep布尔值, 默认=True
如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。
- 返回:
- params字典
参数名称映射到其值。
- inverse_transform(X)[源]#
使用已拟合的 lambda 值应用逆幂变换。
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) 的类数组
已变换的数据。
- 返回:
- X_originalshape 为 (n_samples, n_features) 的 ndarray
原始数据。
- set_output(*, transform=None)[源]#
设置输出容器。
有关如何使用 API 的示例,请参阅 Introducing the set_output API。
- 参数:
- transform{“default”, “pandas”, “polars”}, 默认=None
配置
transform
和fit_transform
的输出。"default"
: 变换器的默认输出格式"pandas"
: DataFrame 输出"polars"
: Polars 输出None
: 变换配置不变
1.4 版新增: 添加了
"polars"
选项。
- 返回:
- self估计器实例
估计器实例。