RobustScaler#

class sklearn.preprocessing.RobustScaler(*, with_centering=True, with_scaling=True, quantile_range=(25.0, 75.0), copy=True, unit_variance=False)[原始碼]#

使用對離群值具有魯棒性的統計資料縮放特徵。

此縮放器會移除中位數,並根據分位數範圍(預設為 IQR:四分位數範圍)縮放資料。IQR 是第 1 個四分位數(第 25 個分位數)和第 3 個四分位數(第 75 個分位數)之間的範圍。

透過計算訓練集中樣本的相關統計資料,獨立地對每個特徵進行居中和縮放。然後儲存中位數和四分位數範圍,以便稍後使用 transform 方法用於後續資料。

資料集的標準化是許多機器學習估算器常見的預處理步驟。通常的做法是移除平均值並縮放到單位變異數。然而,離群值通常會對樣本平均值/變異數產生負面影響。在這種情況下,使用中位數和四分位距通常會產生更好的結果。有關範例視覺化以及與其他縮放器的比較,請參閱比較 RobustScaler 與其他縮放器

在 0.17 版本中新增。

請在使用者指南中閱讀更多內容。

參數:
with_centeringbool,預設值為 True

如果為 True,則在縮放之前將資料置中。這會導致當嘗試在稀疏矩陣上執行 transform 時引發例外,因為將它們置中需要建立一個密集矩陣,這在常見的使用案例中可能太大而無法放入記憶體中。

with_scalingbool,預設值為 True

如果為 True,則將資料縮放到四分位距。

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

用於計算 scale_ 的分位數範圍。預設情況下,這等於四分位距,即 q_min 是第一分位數,而 q_max 是第三分位數。

在 0.18 版本中新增。

copybool,預設值為 True

如果為 False,則嘗試避免複製,而是進行就地縮放。這不能保證始終可以就地運作;例如,如果資料不是 NumPy 陣列或 scipy.sparse CSR 矩陣,仍然可能會返回副本。

unit_variancebool,預設值為 False

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

在 0.24 版本中新增。

屬性:
center_浮點數陣列

訓練集中每個特徵的中位數值。

scale_浮點數陣列

訓練集中每個特徵的(已縮放)四分位距。

在 0.17 版本中新增: scale_ 屬性。

n_features_in_int

fit 期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 具有全部為字串的特徵名稱時才定義。

在 1.0 版本中新增。

另請參閱

魯棒縮放

沒有估算器 API 的對等函數。

sklearn.decomposition.PCA

使用 ‘whiten=True’ 進一步移除特徵之間的線性相關性。

注意事項

https://en.wikipedia.org/wiki/Median https://en.wikipedia.org/wiki/Interquartile_range

範例

>>> from sklearn.preprocessing import RobustScaler
>>> X = [[ 1., -2.,  2.],
...      [ -2.,  1.,  3.],
...      [ 4.,  1., -2.]]
>>> transformer = RobustScaler().fit(X)
>>> transformer
RobustScaler()
>>> transformer.transform(X)
array([[ 0. , -2. ,  0. ],
       [-1. ,  0. ,  0.4],
       [ 1. ,  0. , -1.6]])
fit(X, y=None)[來源]#

計算用於縮放的中位數和分位數。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

用於計算中位數和分位數的資料,這些分位數將用於後續沿特徵軸進行縮放。

y忽略

未使用,此處僅為慣例,以保持 API 的一致性。

傳回值:
self物件

已擬合的縮放器。

fit_transform(X, y=None, **fit_params)[來源]#

擬合資料,然後轉換資料。

使用可選參數 fit_params 將轉換器擬合到 Xy,並傳回 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_features字串或 None 的類陣列,預設值為 None

輸入特徵。

  • 如果 input_featuresNone,則使用 feature_names_in_ 作為輸入特徵名稱。如果未定義 feature_names_in_,則會產生以下輸入特徵名稱:["x0", "x1", ..., "x(n_features_in_ - 1)"]

  • 如果 input_features 是類陣列,則如果定義了 feature_names_in_,則 input_features 必須與 feature_names_in_ 相符。

傳回值:
feature_names_out字串物件的 ndarray

與輸入特徵相同。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查閱使用者指南以了解路由機制如何運作。

傳回值:
routingMetadataRequest

一個封裝路由資訊的 MetadataRequest

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deepbool,預設值=True

如果為 True,將會回傳此估算器及其包含的子物件(亦為估算器)的參數。

傳回值:
paramsdict

參數名稱對應到其值的字典。

inverse_transform(X)[原始碼]#

將資料縮放回原始表示法。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

要轉換回來的重新縮放資料。

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

轉換後的陣列。

set_output(*, transform=None)[原始碼]#

設定輸出容器。

請參閱介紹 set_output API以取得如何使用此 API 的範例。

參數:
transform{"default", "pandas", "polars"},預設值=None

設定 transformfit_transform 的輸出。

  • "default":轉換器的預設輸出格式

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換配置保持不變

在 1.4 版中新增:新增了 "polars" 選項。

傳回值:
self估算器實例

估算器實例。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單的估算器以及巢狀物件(例如 Pipeline)。後者的參數形式為 <component>__<parameter>,因此可以更新巢狀物件的每個組件。

參數:
**paramsdict

估算器參數。

傳回值:
self估算器實例

估算器實例。

transform(X)[原始碼]#

將資料中心化並縮放。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

用於沿指定軸縮放的資料。

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

轉換後的陣列。