StandardScaler#
- class sklearn.preprocessing.StandardScaler(*, copy=True, with_mean=True, with_std=True)[原始碼]#
藉由移除平均值並縮放至單位變異數來標準化特徵。
樣本
x
的標準分數計算如下z = (x - u) / s
其中
u
是訓練樣本的平均值,如果with_mean=False
則為零,而s
是訓練樣本的標準差,如果with_std=False
則為一。透過計算訓練集中樣本的相關統計數據,在每個特徵上獨立進行中心化和縮放。然後儲存平均值和標準差,以便使用
transform
用於後續資料。資料集的標準化是許多機器學習估計器的常見要求:如果個別特徵看起來或多或少不像標準常態分佈資料(例如,平均值為 0 且單位變異數的高斯分佈),它們可能會表現不佳。
例如,學習演算法的目標函數中使用的許多元素(例如,支援向量機的 RBF 核或線性模型的 L1 和 L2 正規化器)假設所有特徵都以 0 為中心,且具有相同數量級的變異數。如果某個特徵的變異數比其他特徵大幾個數量級,則它可能會主導目標函數,並使估計器無法正確地從其他特徵中學習。
StandardScaler
對離群值敏感,並且在存在離群值的情況下,特徵可能會彼此以不同的方式縮放。有關範例視覺化,請參閱 比較 StandardScaler 與其他縮放器。也可以透過傳遞
with_mean=False
將此縮放器應用於稀疏 CSR 或 CSC 矩陣,以避免破壞資料的稀疏結構。請在使用者指南中閱讀更多資訊。
- 參數:
- copybool,預設值為 True
如果為 False,則嘗試避免複製並改為就地縮放。這不保證總是在原地工作;例如,如果資料不是 NumPy 陣列或 scipy.sparse CSR 矩陣,則仍可能傳回副本。
- with_meanbool,預設值為 True
如果為 True,則在縮放之前將資料中心化。當嘗試在稀疏矩陣上執行此操作時,這將不起作用(並引發例外),因為對其進行中心化需要建構密集矩陣,而這在常見的使用案例中可能太大而無法容納在記憶體中。
- with_stdbool,預設值為 True
如果為 True,則將資料縮放到單位變異數(或等效地,單位標準差)。
- 屬性:
- scale_形狀為 (n_features,) 或 None 的 ndarray
每個特徵的資料相對縮放,以達到零平均值和單位變異數。通常使用
np.sqrt(var_)
計算此值。如果變異數為零,則無法達到單位變異數,且資料保持原樣,得到縮放因子為 1。scale_
在with_std=False
時等於None
。在版本 0.17 中新增:scale_
- mean_形狀為 (n_features,) 或 None 的 ndarray
訓練集中每個特徵的平均值。當
with_mean=False
和with_std=False
時,等於None
。- var_形狀為 (n_features,) 或 None 的 ndarray
訓練集中每個特徵的變異數。用於計算
scale_
。當with_mean=False
和with_std=False
時,等於None
。- n_features_in_int
在 fit 期間看到的特徵數量。
在版本 0.24 中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
具有都是字串的特徵名稱時才定義。在版本 1.0 中新增。
- n_samples_seen_int 或形狀為 (n_features,) 的 ndarray
每個特徵的估計器處理的樣本數量。如果沒有遺失的樣本,則
n_samples_seen
將為整數,否則將為 dtype int 的陣列。如果使用了sample_weights
,則它將是一個浮點數(如果沒有遺失的資料),或是到目前為止看到權重的總和的 dtype float 陣列。將在新的 fit 呼叫時重設,但在partial_fit
呼叫時會遞增。
注意事項
NaN 被視為遺失值:在擬合中被忽略,並在轉換中保留。
我們使用標準差的有偏估計量,相當於
numpy.std(x, ddof=0)
。請注意,ddof
的選擇不太可能影響模型效能。範例
>>> from sklearn.preprocessing import StandardScaler >>> data = [[0, 0], [0, 0], [1, 1], [1, 1]] >>> scaler = StandardScaler() >>> print(scaler.fit(data)) StandardScaler() >>> print(scaler.mean_) [0.5 0.5] >>> print(scaler.transform(data)) [[-1. -1.] [-1. -1.] [ 1. 1.] [ 1. 1.]] >>> print(scaler.transform([[2, 2]])) [[3. 3.]]
- fit(X, y=None, sample_weight=None)[原始碼]#
計算平均值和標準差,以用於稍後的縮放。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列,稀疏矩陣}
用於計算平均值和標準差的資料,用於稍後沿特徵軸縮放。
- yNone
已忽略。
- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
每個樣本的個別權重。
在版本 0.24 中新增:參數 sample_weight 對 StandardScaler 的支援。
- 傳回:
- 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_params字典
額外的擬合參數。
- 傳回:
- X_new形狀為 (n_samples, n_features_new) 的 ndarray 陣列
已轉換的陣列。
- get_feature_names_out(input_features=None)[原始碼]#
取得轉換的輸出特徵名稱。
- 參數:
- input_features字串或 None 的類陣列,預設值為 None
輸入特徵。
如果
input_features
為None
,則使用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)[原始碼]#
取得此估算器的參數。
- 參數:
- deep布林值,預設值為 True
如果為 True,則會傳回此估算器和其中包含的子物件(也是估算器)的參數。
- 傳回:
- params字典
參數名稱對應到其值的字典。
- inverse_transform(X, copy=None)[原始碼]#
將數據縮放回原始表示法。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列,稀疏矩陣}
用於沿特徵軸縮放的數據。
- copy布林值,預設值為 None
是否複製輸入 X。
- 傳回:
- X_tr形狀為 (n_samples, n_features) 的 {ndarray, 稀疏矩陣}
已轉換的陣列。
- partial_fit(X, y=None, sample_weight=None)[原始碼]#
在 X 上線上計算均值和標準差,以便稍後縮放。
X 的所有內容都作為單一批次處理。 這適用於以下情況:當
fit
因n_samples
非常多而不可行,或者因為 X 是從連續串流讀取時。Chan, Tony F.、Gene H. Golub 和 Randall J. LeVeque 在「計算樣本變異數的演算法:分析和建議」中第 1.5a,b 式給出了增量均值和標準差的演算法。《美國統計學家》37.3 (1983): 242-247
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列,稀疏矩陣}
用於計算平均值和標準差的資料,用於稍後沿特徵軸縮放。
- yNone
已忽略。
- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
每個樣本的個別權重。
在版本 0.24 中新增:參數 sample_weight 對 StandardScaler 的支援。
- 傳回:
- self物件
已擬合的縮放器。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') StandardScaler [原始碼]#
請求傳遞至
fit
方法的中繼資料。請注意,只有當
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。 請查看使用手冊,瞭解路由機制如何運作。每個參數的選項為
True
:請求中繼資料,如果提供,則傳遞至fit
。 如果未提供中繼資料,則會忽略該請求。False
:不請求中繼資料,元估算器不會將其傳遞至fit
。None
:不請求中繼資料,如果使用者提供,元估算器會引發錯誤。str
:中繼資料應使用此給定別名而不是原始名稱傳遞至元估算器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。 這可讓您變更某些參數的請求,而不是其他參數的請求。在 1.3 版中新增。
注意
僅當此估算器用作元估算器的子估算器時(例如在
Pipeline
中使用)時,此方法才相關。 否則,它沒有任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
用於
fit
中sample_weight
參數的中繼資料路由。
- 傳回:
- self物件
更新後的物件。
- set_inverse_transform_request(*, copy: bool | None | str = '$UNCHANGED$') StandardScaler [原始碼]#
請求傳遞至
inverse_transform
方法的中繼資料。請注意,只有當
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。 請查看使用手冊,瞭解路由機制如何運作。每個參數的選項為
True
:請求中繼資料,並在提供時傳遞至inverse_transform
。如果未提供中繼資料,則會忽略請求。False
:不請求中繼資料,且元估計器不會將其傳遞至inverse_transform
。None
:不請求中繼資料,如果使用者提供,元估算器會引發錯誤。str
:中繼資料應使用此給定別名而不是原始名稱傳遞至元估算器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。 這可讓您變更某些參數的請求,而不是其他參數的請求。在 1.3 版中新增。
注意
僅當此估算器用作元估算器的子估算器時(例如在
Pipeline
中使用)時,此方法才相關。 否則,它沒有任何作用。- 參數:
- copystr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
inverse_transform
中copy
參數的中繼資料路由。
- 傳回:
- self物件
更新後的物件。
- set_output(*, transform=None)[原始碼]#
設定輸出容器。
有關如何使用 API 的範例,請參閱 設定輸出 API 簡介。
- 參數:
- transform{“default”, “pandas”, “polars”},預設值為 None
設定
transform
和fit_transform
的輸出。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換設定不變
於 1.4 版本新增:新增了
"polars"
選項。
- 傳回:
- self估計器實例
估計器實例。
- set_params(**params)[原始碼]#
設定此估計器的參數。
此方法適用於簡單的估計器以及巢狀物件(例如
Pipeline
)。後者具有<元件>__<參數>
形式的參數,因此可以更新巢狀物件的每個元件。- 參數:
- **paramsdict
估計器參數。
- 傳回:
- self估計器實例
估計器實例。
- set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') StandardScaler [原始碼]#
請求傳遞至
partial_fit
方法的中繼資料。請注意,只有當
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。 請查看使用手冊,瞭解路由機制如何運作。每個參數的選項為
True
:請求中繼資料,並在提供時傳遞至partial_fit
。如果未提供中繼資料,則會忽略請求。False
:不請求中繼資料,且元估計器不會將其傳遞至partial_fit
。None
:不請求中繼資料,如果使用者提供,元估算器會引發錯誤。str
:中繼資料應使用此給定別名而不是原始名稱傳遞至元估算器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。 這可讓您變更某些參數的請求,而不是其他參數的請求。在 1.3 版中新增。
注意
僅當此估算器用作元估算器的子估算器時(例如在
Pipeline
中使用)時,此方法才相關。 否則,它沒有任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
partial_fit
中sample_weight
參數的中繼資料路由。
- 傳回:
- self物件
更新後的物件。
- set_transform_request(*, copy: bool | None | str = '$UNCHANGED$') StandardScaler [原始碼]#
請求傳遞至
transform
方法的中繼資料。請注意,只有當
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。 請查看使用手冊,瞭解路由機制如何運作。每個參數的選項為
True
:請求中繼資料,並在提供時傳遞至transform
。如果未提供中繼資料,則會忽略請求。False
:不請求中繼資料,且元估計器不會將其傳遞至transform
。None
:不請求中繼資料,如果使用者提供,元估算器會引發錯誤。str
:中繼資料應使用此給定別名而不是原始名稱傳遞至元估算器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。 這可讓您變更某些參數的請求,而不是其他參數的請求。在 1.3 版中新增。
注意
僅當此估算器用作元估算器的子估算器時(例如在
Pipeline
中使用)時,此方法才相關。 否則,它沒有任何作用。- 參數:
- copystr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
transform
中copy
參數的中繼資料路由。
- 傳回:
- self物件
更新後的物件。