穩健縮放#

sklearn.preprocessing.robust_scale(X, *, axis=0, with_centering=True, with_scaling=True, quantile_range=(25.0, 75.0), copy=True, unit_variance=False)[原始碼]#

沿任何軸標準化資料集。

以中位數為中心,並根據四分位距進行成分縮放。

請參閱使用者指南以了解更多資訊。

參數:
X形狀為 (n_sample, n_features) 的類陣列 (array-like) 或稀疏矩陣 (sparse matrix)

要中心化和縮放的資料。

axisint,預設值=0

用於計算中位數和四分位距 (IQR) 的軸。如果為 0,則獨立縮放每個特徵;如果為 1,則縮放每個樣本。

with_centeringbool,預設值=True

如果 True,則在縮放之前將資料中心化。

with_scalingbool,預設值=True

如果 True,則將資料縮放為單位變異數(或等效地,單位標準差)。

quantile_rangetuple (q_min, q_max),0.0 < q_min < q_max < 100.0,預設值=(25.0, 75.0)

用於計算 scale_ 的分位數範圍。預設情況下,此範圍等於四分位距 (IQR),也就是說,q_min 是第一個分位數,q_max 是第三個分位數。

於版本 0.18 新增。

copybool,預設值=True

如果為 False,則嘗試避免複製並就地縮放。這不保證始終能就地工作;例如,如果資料是具有整數 (int) 資料類型的 NumPy 陣列,即使 copy=False 也會傳回副本。

unit_variancebool,預設值=False

如果 True,則縮放資料,使常態分佈特徵的變異數為 1。一般來說,如果標準常態分佈的 q_maxq_min 的 x 值之間的差異大於 1,則資料集將會縮小。如果小於 1,則資料集將會放大。

於版本 0.24 新增。

傳回值:
X_tr形狀為 (n_samples, n_features) 的 {ndarray, 稀疏矩陣}

轉換後的資料。

另請參閱

穩健縮放器

使用 Transformer API 執行中心化和縮放(例如,作為預處理 Pipeline 的一部分)。

注意事項

此實作會拒絕中心化 SciPy 稀疏矩陣,因為這會使它們變為非稀疏,並可能因記憶體耗盡問題而導致程式崩潰。

相反地,預期呼叫者要麼明確設定 with_centering=False(在這種情況下,只會對 CSR 矩陣的特徵執行變異數縮放),要麼呼叫 X.toarray(),前提是他/她預期具體化後的密集陣列可以放入記憶體中。

為避免記憶體複製,呼叫者應傳遞 CSR 矩陣。

如需比較不同縮放器、轉換器和正規化器,請參閱:比較不同縮放器對具有離群值的資料的影響

警告

資料洩漏的風險

除非您知道自己在做什麼,否則請勿使用 robust_scale。一個常見的錯誤是在將資料分割成訓練集和測試集之前,將其應用於整個資料。這會偏向模型評估,因為資訊會從測試集洩漏到訓練集。一般而言,我們建議在 Pipeline 中使用 RobustScaler,以防止大多數資料洩漏風險:pipe = make_pipeline(RobustScaler(), LogisticRegression())

範例

>>> from sklearn.preprocessing import robust_scale
>>> X = [[-2, 1, 2], [-1, 0, 1]]
>>> robust_scale(X, axis=0)  # scale each column independently
array([[-1.,  1.,  1.],
       [ 1., -1., -1.]])
>>> robust_scale(X, axis=1)  # scale each row independently
array([[-1.5,  0. ,  0.5],
       [-1. ,  0. ,  1. ]])