sklearn.preprocessing.PowerTransformer¶
class sklearn.preprocessing.PowerTransformer(method='yeo-johnson', *, standardize=True, copy=True)
逐个应用幂变换以使数据更像高斯型。
幂变换是一组参数化,单调变换,可用于使数据更像高斯型。这对于建模与异方差(非恒定方差)或其他需要正态性的情况有关的模型很有用。
当前,PowerTransformer支持Box-Cox变换和Yeo-Johnson变换。通过最大似然来估计用于稳定方差和最小化偏斜的最佳参数。
Box-Cox要求输入数据严格为正数,而Yeo-Johnson支持正数或负数。
默认情况下,零均值,单位方差归一化应用于转换后的数据。
在用户指南中阅读更多内容。
0.20版中的新功能。
参数 | 说明 |
---|---|
method | str, (default=’yeo-johnson’) 功率变换方法。可用的方法有: ‘yeo-johnson’ [1],使用正负值 ‘box-cox’ [2]),仅适用于严格正值 |
standardize | boolean, default=True 设置为True可将零均值,单位方差归一化应用于转换后的输出。 |
copy | boolean, optional, default=True 设置为False可在转换期间执行就地计算。 |
属性 | 说明 |
---|---|
lambdas_ | array of float, shape (n_features,) 所选特征的功率变换参数。 |
另见:
没有估算器API的等效函数。
使用参数将数据映射到标准正态分布
output_distribution='normal'
.
注释
NaN被视为缺失值:忽略适合度,并保持变换值。有关不同缩放器,转换器和规范化器的比较,请参阅examples/preprocessing/plot_all_scaling.py。
参考资料
1 IK Yeo和RA Johnson,“新的功率转换系列,可改善正态性或对称性。”Biometrika,87(4),第954-959页,(2000)。
2 GEP Box和DR Cox,“转型分析”,皇家统计学会杂志B,第26期,第211-252页(1964年)。
示例
>>> 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]) |
估计每个功能的最佳参数λ。 |
fit_transform (X[, y]) |
拟合数据,然后对其进行转换。 |
get_params ([deep]) |
获取此估计量的参数。 |
inverse_transform (X) |
使用拟合的lambda应用逆功率变换。 |
set_params (**params) |
设置此估算器的参数。 |
transform (X) |
使用适合的lambda将功率变换应用于每个要素。 |
__init__(method='yeo-johnson', *, standardize=True, copy=True)
初始化self,有关准确的签名,请参见help(type(self))。
fit(X, y=None)
估计每个功能的最佳参数λ。
使用最大似然性独立地估计每个特征的最佳lambda参数。
参数 | 说明 |
---|---|
X | array-like, shape [n_samples, n_features] 用于估计最佳变换参数的数据。 |
y | None |
返回值 | 说明 |
---|---|
self | object |
fit_transform(X, y=None)
拟合数据,然后对其进行转换。
使用可选参数fit_params将转换器拟合到X和y,并返回X的转换版本。
参数 | 说明 |
---|---|
X | {array-like, sparse matrix, dataframe} of shape (n_samples, n_features) |
y | ndarray of shape (n_samples,), default=None 目标值。 |
**fit_params | dict 其他拟合参数。 |
返回值 | 说明 |
---|---|
X_new | ndarray array of shape (n_samples, n_features_new) 转换后的数组。 |
get_params(deep=True)
获取此估计量的参数。
参数 | 说明 |
---|---|
deep | bool, default=True 如果为True,则将返回此估算器和作为估算器的所包含子对象的参数。 |
返回值 | 说明 |
---|---|
params | mapping of string to any 参数名称映射到其值。 |
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)
参数 | 说明 |
---|---|
X | array-like, shape (n_samples, n_features) 转换后的数据。 |
返回值 | 说明 |
---|---|
X_out | array-like, shape (n_samples, n_features) 原始数据 |
set_params(**params)
设置此估算器的参数。
该方法适用于简单的估计器以及嵌套对象(例如管道)。后者的参数形式为<component>__<parameter>这样就可以更新嵌套对象的每个组件。
参数 | 说明 |
---|---|
**params | dict 估算器参数。 |
返回值 | 说明 |
---|---|
self | object 估算器实例。 |
transform(X)
使用适合的lambda将功率变换应用于每个要素。
参数 | 说明 |
---|---|
X | array-like, shape (n_samples, n_features) 使用幂变换要变换的数据。 |
返回值 | 说明 |
---|---|
X_trans | array-like, shape (n_samples, n_features) 转换后的数据。 |