1 StandardScaler作用:
StandardScaler是對數據集做歸一化處理的,他依據列為單位進行計算,即每個特徵為處理對象。
2 計算方法:
(原始值 - 平均值)/ 標準差
3代碼驗證:
3.1 調用StandardScaler
<code>import numpy as np
from sklearn.preprocessing import StandardScaler
np.random.seed(42)
samples = np.random.randn(10,1)
scaler = StandardScaler()
scaler.fit(samples)
/<code>
Out[11]:
<code>StandardScaler(copy=True, with_mean=True, with_std=True)
/<code>
3.2 手動實現
<code># 預測函數
def scale(series, x):
mean = np.mean(series)
std = np.std(series)
return (x-mean)/std
/<code>
3.3 驗證
<code>scale(samples[:,0], np.array([[1],[2]]))
/<code>
Out[33]:
<code>array([[0.80468598],
[2.26261185]])
/<code>
<code>scaler.transform(np.array([[1],[2]]))
/<code>
Out[29]:
<code>array([[0.80468598],
[2.26261185]])
/<code>
4 StandScaler的屬性
<code>dir(scaler)
/<code>
Out
<code>['__class__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getstate__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__le__',
'__lt__',
'__module__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__setstate__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'_get_param_names',
'_reset',
'copy',
'fit',
'fit_transform',
'get_params',
'inverse_transform',
'mean_',
'n_samples_seen_',
'partial_fit',
'scale_',
'set_params',
'transform',
'var_',
'with_mean',
'with_std']
/<code>
看一些主要的屬性和方法
1.scale_ = 標準差
<code>np.std(samples,axis=0) == scaler.scale_
/<code>
Out[58]:
<code>array([ True, True])
/<code>
2.mean_ = 平均值
<code>np.mean(samples,axis=0) == scaler.mean_
/<code>
Out[57]:
<code>array([ True, True])
/<code>
3.scaler.var_ = 方差
<code>np.var(samples,axis=0) == scaler.var_
/<code>
Out[60]:
<code>array([ True, True])
/<code>
4 inverse_transform 反向計算
<code>scaler.inverse_transform(scaler.transform(np.array([[1, 1],[2,2]])))
/<code>
Out[61]:
<code>array([[1., 1.],
[2., 2.]])
/<code>
結論
手動方法與結果相同,說明StandardScaler的計算公式為:
閱讀更多 用數說話 的文章