穩健縮放#
- 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_max
和q_min
的 x 值之間的差異大於 1,則資料集將會縮小。如果小於 1,則資料集將會放大。於版本 0.24 新增。
- 傳回值:
- X_tr形狀為 (n_samples, n_features) 的 {ndarray, 稀疏矩陣}
轉換後的資料。
注意事項
此實作會拒絕中心化 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. ]])