sklearn.preprocessing.quantile_transform?

sklearn.preprocessing.quantile_transform(X, *, axis=0, n_quantiles=1000, output_distribution='uniform', ignore_implicit_zeros=False, subsample=100000, random_state=None, copy=True)

[源碼]

使用分位數信息變換特征。

此方法將特征轉換為遵循均勻或正態分布。因此,對于給定的特征,此變換趨向于散布最頻繁的值。它還減少了(邊際)離群值的影響:因此,這是一個可靠的預處理方案。

變換獨立應用于每個功能。首先,特征的累積分布函數的估計值用于將原始值映射到均勻分布。然后使用關聯的分位數函數將獲得的值映射到所需的輸出分布。低于或高于擬合范圍的新數據/看不見數據的特征值將映射到輸出分布的邊界。請注意,此變換是非線性的。它可能會扭曲以相同比例尺測量的變量之間的線性相關性,但會使以不同比例尺測量的變量更直接可比。

用戶指南中閱讀更多內容。

參數 說明
X array-like, sparse matrix
要轉換的數據。
axis int, (default=0)*
用于計算平均值和標準偏差的軸。如果為0,則變換每個特征,否則(如果為1)則變換每個樣本。
n_quantiles int, optional (default=1000 or n_samples)
要計算的分位數。它對應于用于離散化累積分布函數的界標數。如果n_quantiles大于樣本數,則將n_quantiles設置為樣本數,因為較大的分位數不能夠更好地近似累積分布函數估計量。
output_distribution str, optional (default=’uniform’)
轉換后數據的邊際分布。選擇是“統一”(默認)或“正常”。
ignore_implicit_zeros bool, optional (default=False)
僅適用于稀疏矩陣。如果為True,則將丟棄矩陣的稀疏條目以計算分位數統計信息。如果為False,則將這些條目視為零。
subsample int, optional (default=1e5)
用于估計分位數以提高計算效率的最大樣本數。注意,對于值相同的稀疏矩陣和密集矩陣,子采樣過程可能有所不同。
random_state int, RandomState instance or None, optional (default=None)
確定用于二次采樣和平滑噪聲的隨機數生成。請參閱子樣本以獲取更多詳細信息。在多個函數調用之間傳遞int以獲得可重復的結果。見詞匯
copy boolean, optional, (default=True)
設置為False可以執行就地轉換并避免復制(如果輸入已經是一個numpy數組)。如果為True,將轉換X的副本,而使原始X保持不變
..versionchanged:: 0.23
副本的默認值在0.23中從False更改為True。
返回 說明
Xt ndarray or sparse matrix, shape (n_samples, n_features)
轉換后的數據。

另見:

QuantileTransformer

使用Transformer API(例如,作為預處理 sklearn.pipeline.Pipeline的一部分)執行基于分位數的縮放。

power_transform

使用冪變換將數據映射到正態分布。

scale

執行更快的標準化,但對異常值的魯棒性較低。

robust_scale

執行魯棒的標準化,以消除離群值的影響,但不會使離群值和離群值處于相同的規模。

注釋

NaN被視為缺失值:忽略適合度,并保持變換值。

有關不同縮放器,轉換器和規范化器的比較,請參閱examples/preprocessing/plot_all_scaling.py

示例

>>> import numpy as np
>>> from sklearn.preprocessing import quantile_transform
>>> rng = np.random.RandomState(0)
>>> X = np.sort(rng.normal(loc=0.5, scale=0.25, size=(251)), axis=0)
>>> quantile_transform(X, n_quantiles=10, random_state=0, copy=True)
array([...])

sklearn.preprocessing.quantile_transform使用示例?