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,)
所選特征的功率變換參數。

另見:

power_transform

沒有估算器API的等效函數。

QuantileTransformer

使用參數將數據映射到標準正態分布

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 = [[12], [32], [45]]
>>> 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)
轉換后的數據。