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) 轉換后的數據。 |