scale#
- sklearn.preprocessing.scale(X, *, axis=0, with_mean=True, with_std=True, copy=True)[原始碼]#
沿著任何軸標準化資料集。
將資料中心化至平均值,並按組件縮放到單位變異數。
在使用者指南中閱讀更多資訊。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}
要中心化和縮放的資料。
- axis{0, 1}, default=0
用於計算均值和標準差的軸。如果為 0,則獨立標準化每個特徵,否則(如果為 1)標準化每個樣本。
- with_meanbool, default=True
如果為 True,則在縮放之前將資料中心化。
- with_stdbool, default=True
如果為 True,則將資料縮放到單位變異數(或等效地,單位標準差)。
- copybool, default=True
如果為 False,則嘗試避免複製並就地縮放。這不能保證總是在原地運作;例如,如果資料是具有整數 dtype 的 numpy 陣列,即使使用 copy=False,也會傳回副本。
- 傳回值:
- X_tr形狀為 (n_samples, n_features) 的 {ndarray, 稀疏矩陣}
轉換後的資料。
另請參閱
StandardScaler
使用 Transformer API 執行縮放到單位變異數(例如,作為預處理
Pipeline
的一部分)。
注意事項
此實作會拒絕中心化 scipy.sparse 矩陣,因為這會使它們變成非稀疏矩陣,並可能因記憶體耗盡問題而導致程式崩潰。
相反地,預期呼叫者會明確設定
with_mean=False
(在這種情況下,只會在 CSC 矩陣的特徵上執行變異數縮放),或者如果他/她預期實體化的密集陣列適合記憶體,則呼叫X.toarray()
。為了避免記憶體複製,呼叫者應該傳遞 CSC 矩陣。
NaN 被視為遺失值:在計算統計資料時忽略,並在資料轉換期間保留。
我們使用標準差的有偏估計量,相當於
numpy.std(x, ddof=0)
。請注意,選擇ddof
不太可能影響模型效能。有關不同縮放器、轉換器和正規化器的比較,請參閱:比較不同的縮放器對具有離群值的資料的影響。
警告
資料洩漏的風險
除非您知道自己在做什麼,否則不要使用
scale
。一個常見的錯誤是在將資料分割為訓練集和測試集之前,將其應用於整個資料。這會使模型評估產生偏差,因為資訊會從測試集洩漏到訓練集。一般來說,我們建議在 Pipeline 中使用StandardScaler
,以防止大多數資料洩漏的風險:pipe = make_pipeline(StandardScaler(), LogisticRegression())
。範例
>>> from sklearn.preprocessing import scale >>> X = [[-2, 1, 2], [-1, 0, 1]] >>> scale(X, axis=0) # scaling each column independently array([[-1., 1., 1.], [ 1., -1., -1.]]) >>> scale(X, axis=1) # scaling each row independently array([[-1.37..., 0.39..., 0.98...], [-1.22..., 0. , 1.22...]])