QuantileTransformer#
- class sklearn.preprocessing.QuantileTransformer(*, n_quantiles=1000, output_distribution='uniform', ignore_implicit_zeros=False, subsample=10000, random_state=None, copy=True)[來源]#
使用分位數資訊轉換特徵。
此方法將特徵轉換為遵循均勻分佈或常態分佈。因此,對於給定的特徵,此轉換會傾向於分散最常出現的值。它也減少了(邊緣)離群值的影響:因此這是一種穩健的預處理方案。
轉換會獨立應用於每個特徵。首先,使用特徵的累積分配函數估計值,將原始值映射到均勻分佈。然後使用相關的分位函數將獲得的值映射到所需的輸出分佈。落入擬合範圍以下或以上的新/未見數據的特徵值將映射到輸出分佈的邊界。請注意,此轉換是非線性的。它可能會扭曲在相同尺度上測量的變數之間的線性相關性,但會使在不同尺度上測量的變數更直接地具有可比性。
有關範例視覺化,請參閱比較 QuantileTransformer 與其他縮放器。
在使用者指南中閱讀更多資訊。
在版本 0.19 中新增。
- 參數:
- n_quantilesint,預設值=1000 或 n_samples
要計算的分位數數量。它對應於用於離散化累積分配函數的地標數量。如果 n_quantiles 大於樣本數量,則 n_quantiles 會設定為樣本數量,因為更大的分位數數量不會更好地近似累積分配函數估計值。
- output_distribution{‘uniform’、‘normal’},預設值=’uniform’
轉換後數據的邊際分佈。選擇為「uniform」(預設值)或「normal」。
- ignore_implicit_zerosbool,預設值=False
僅適用於稀疏矩陣。如果為 True,則會捨棄矩陣的稀疏條目以計算分位數統計資訊。如果為 False,則這些條目會被視為零。
- subsampleint 或 None,預設值=10_000
用於估計分位數以提高計算效率的最大樣本數量。請注意,對於數值相同的稀疏和密集矩陣,子取樣程序可能會有所不同。設定
subsample=None
來停用子取樣。在 1.5 版中新增:新增了停用子取樣的選項
None
。- random_stateint、RandomState 執行個體或 None,預設值=None
決定子取樣和平滑雜訊的隨機數產生。請參閱
subsample
以取得更多詳細資訊。傳遞 int 以取得跨多個函數呼叫的可重複結果。請參閱詞彙表。- copybool,預設值=True
如果設定為 False,則會執行就地轉換並避免複製(如果輸入已是 numpy 陣列)。
- 屬性:
另請參閱
quantile_transform
沒有估計器 API 的對等函數。
PowerTransformer
使用幂轉換執行到常態分佈的映射。
StandardScaler
執行標準化,速度更快,但對離群值的穩健性較差。
RobustScaler
執行穩健的標準化,消除離群值的影響,但不將離群值和內群值放在相同的尺度上。
注意事項
NaN 被視為遺失值:在擬合中被忽略,並在轉換中保留。
範例
>>> import numpy as np >>> from sklearn.preprocessing import QuantileTransformer >>> rng = np.random.RandomState(0) >>> X = np.sort(rng.normal(loc=0.5, scale=0.25, size=(25, 1)), axis=0) >>> qt = QuantileTransformer(n_quantiles=10, random_state=0) >>> qt.fit_transform(X) array([...])
- fit(X, y=None)[來源]#
計算用於轉換的分位數。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列、稀疏矩陣}
用於沿特徵軸縮放的資料。如果提供稀疏矩陣,則會將其轉換為稀疏的
csc_matrix
。此外,如果ignore_implicit_zeros
為 False,則稀疏矩陣需要是非負數。- yNone
已忽略。
- 傳回值:
- self物件
已擬合的轉換器。
- fit_transform(X, y=None, **fit_params)[來源]#
將資料擬合,然後轉換資料。
使用可選參數
fit_params
將轉換器擬合至X
和y
,並傳回X
的轉換版本。- 參數:
- X形狀為 (n_samples, n_features) 的類陣列
輸入樣本。
- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列,預設值=None
目標值(對於非監督式轉換為 None)。
- **fit_paramsdict
額外的擬合參數。
- 傳回值:
- X_new形狀為 (n_samples, n_features_new) 的 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
為類陣列 (array-like),則如果定義了feature_names_in_
,input_features
必須與feature_names_in_
相符。
- 傳回值:
- feature_names_outstr 物件的 ndarray
與輸入特徵相同。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看 使用者指南,了解路由機制如何運作。
- 傳回值:
- routingMetadataRequest
一個封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deepbool,預設值為 True
如果為 True,將會返回此估算器以及包含的子物件 (即估算器) 的參數。
- 傳回值:
- paramsdict
參數名稱對應到它們的值。
- inverse_transform(X)[原始碼]#
反向投影回原始空間。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列、稀疏矩陣}
用於沿特徵軸縮放的資料。如果提供稀疏矩陣,則會將其轉換為稀疏的
csc_matrix
。此外,如果ignore_implicit_zeros
為 False,則稀疏矩陣需要是非負數。
- 傳回值:
- Xt{ndarray,稀疏矩陣},形狀為 (n_samples, n_features)
投影後的資料。
- set_output(*, transform=None)[原始碼]#
設定輸出容器。
請參閱 介紹 set_output API,以取得如何使用此 API 的範例。
- 參數:
- transform{“default”, “pandas”, “polars”},預設值為 None
設定
transform
和fit_transform
的輸出。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換設定保持不變
在 1.4 版本中新增:新增了
"polars"
選項。
- 傳回值:
- self估算器實例
估算器實例。