# StandardScaler類是一個用來對數據進行歸一化和標准化的類。
import numpy as np
from sklearn.preprocessing import StandardScaler
'''
scale_: 縮放比例,同時也是標准差
mean_: 每個特征的平均值
var_:每個特征的方差
n_sample_seen_:樣本數量,可以通過patial_fit 增加
'''
x = np.array(range(1, 10)).reshape(-1, 1)
ss = StandardScaler()
ss.fit(X=x)
print(x)
print(ss.n_samples_seen_)
print(ss.mean_)
print(ss.var_)
print(ss.scale_)
print('標准化后的數據:')
y = ss.fit_transform(x)
y
結果:
關於StandardScaler()的api函數
api | describe |
---|---|
fit (X[, y, sample_weight]) |
Compute the mean and std to be used for later scaling. |
fit_transform (X[, y]) |
Fit to data, then transform it. |
get_feature_names_out ([input_features]) |
Get output feature names for transformation. |
get_params ([deep]) |
Get parameters for this estimator. |
inverse_transform (X[, copy]) |
Scale back the data to the original representation. |
partial_fit (X[, y, sample_weight]) |
Online computation of mean and std on X for later scaling. |
set_params (**params) |
Set the parameters of this estimator. |
transform (X[, copy]) |
Perform standardization by centering and scaling. |
常用api方法:
1、fit
用於計算訓練數據的均值和方差, 后面就會用均值和方差來轉換訓練數據
2、fit_transform
不僅計算訓練數據的均值和方差,還會基於計算出來的均值和方差來轉換訓練數據,從而把數據轉換成標准的正太分布
3、transform
很顯然,它只是進行轉換,只是把訓練數據轉換成標准的正態分布
對於上述方法的使用:
a) 先用fit
scaler = preprocessing.StandardScaler().fit(X)
這一步可以得到scaler,scaler里面存的有計算出來的均值和方差
b) 再用transform
scaler.transform(X)
這一步再用scaler中的均值和方差來轉換X,使X標准化
c) 那么在預測的時候, 也要對數據做同樣的標准化處理,即也要用上面的scaler中的均值和方差來對預測時候的特征進行標准化
注意:測試數據和預測數據的標准化的方式要和訓練數據標准化的方式一樣, 必須用同一個scaler來進行transform