首先咱們來看看歸一化的概念:算法
數據的標準化(normalization)是將數據按比例縮放,使之落入一個小的特定區間。在某些比較和評價的指標處理中常常會用到,去除數據的單位限制,將其轉化爲無量綱的純數值,便於不一樣單位或量級的指標可以進行比較和加權。其中最典型的就是數據的歸一化處理,即將數據統一映射到[0,1]區間上。數據結構
目前數據標準化方法有多種,歸結起來能夠分爲直線型方法(如極值法、標準差法)、折線型方法(如三折線法)、曲線型方法(如半正態性分佈)。不一樣的標準化方法,對系統的評價結果會產生不一樣的影響,然而不幸的是,在數據標準化方法的選擇上,尚未通用的法則能夠遵循。dom
1 把數變爲(0,1)之間的小數
主要是爲了數據處理方便提出來的,把數據映射到0~1範圍以內處理,更加便捷快速,應該歸到數字信號處理範疇以內。
2 把有量綱表達式變爲無量綱表達式
歸一化是一種簡化計算的方式,即將有量綱的表達式,通過變換,化爲無量綱的表達式,成爲純量。 好比,複數阻抗能夠歸一化書寫:Z = R + jωL = R(1 + jωL/R) ,複數部分變成了純數量了,沒有量綱。
另外,微波之中也就是電路分析、信號系統、電磁波傳輸等,有不少運算均可以如此處理,既保證了運算的便捷,又能凸現出物理量的本質含義。優化
1. 提高模型的收斂速度spa
以下圖,x1的取值爲0-2000,而x2的取值爲1-5,假如只有這兩個特徵,對其進行優化時,會獲得一個窄長的橢圓形,致使在梯度降低時,梯度的方向爲垂直等高線的方向而走之字形路線,這樣會使迭代很慢,相比之下,右圖的迭代就會很快(理解:也就是步長走多走少方向老是對的,不會走偏).net
2.提高模型的精度code
歸一化的另外一好處是提升精度,這在涉及到一些距離計算的算法時效果顯著,好比算法要計算歐氏距離,上圖中x2的取值範圍比較小,涉及到距離計算時其對結果的影響遠比x1帶來的小,因此這就會形成精度的損失。因此歸一化頗有必要,他可讓各個特徵對結果作出的貢獻相同。orm
在多指標評價體系中,因爲各評價指標的性質不一樣,一般具備不一樣的量綱和數量級。當各指標間的水平相差很大時,若是直接用原始指標值進行分析,就會突出數值較高的指標在綜合分析中的做用,相對削弱數值水平較低指標的做用。所以,爲了保證結果的可靠性,須要對原始指標數據進行標準化處理。blog
在數據分析以前,咱們一般須要先將數據標準化(normalization),利用標準化後的數據進行數據分析。數據標準化也就是統計數據的指數化。數據標準化處理主要包括數據同趨化處理和無量綱化處理兩個方面。數據同趨化處理主要解決不一樣性質數據問題,對不一樣性質指標直接加總不能正確反映不一樣做用力的綜合結果,須先考慮改變逆指標數據性質,使全部指標對測評方案的做用力同趨化,再加總才能得出正確結果。數據無量綱化處理主要解決數據的可比性。通過上述標準化處理,原始數據均轉換爲無量綱化指標測評值,即各指標值都處於同一個數量級別上,能夠進行綜合測評分析。get
從經驗上說,歸一化是讓不一樣維度之間的特徵在數值上有必定比較性,能夠大大提升分類器的準確性。
如今咱們再來看看基礎的NumPy代碼是如何實現的:
>>> x=np.random.random((10,3)) >>> x array([[0.44951388, 0.58974524, 0.43980589], [0.3082853 , 0.71042825, 0.02617535], [0.10836115, 0.66774964, 0.85824697], [0.01442332, 0.76459011, 0.75151452], [0.64054078, 0.02121539, 0.87271819], [0.75971598, 0.4268253 , 0.66039724], [0.11865255, 0.14679259, 0.53782096], [0.85085254, 0.26284603, 0.00246512], [0.41957758, 0.96842006, 0.65555725], [0.70227785, 0.78120928, 0.54771033]]) >>> x.mean(0) array([0.43722009, 0.53398219, 0.53524118]) >>> xc=x-x.mean(0) >>> xc array([[ 0.01229379, 0.05576305, -0.0954353 ], [-0.1289348 , 0.17644606, -0.50906583], [-0.32885894, 0.13376745, 0.32300579], [-0.42279677, 0.23060792, 0.21627333], [ 0.20332068, -0.5127668 , 0.33747701], [ 0.32249589, -0.10715689, 0.12515606], [-0.31856754, -0.3871896 , 0.00257978], [ 0.41363245, -0.27113616, -0.53277606], [-0.01764252, 0.43443787, 0.12031607], [ 0.26505776, 0.24722709, 0.01246915]]) >>> xc.mean(0) array([ 5.55111512e-18, 3.33066907e-17, -4.44089210e-17])
由於最後歸一化的均值在0附近,所以在機器精度範圍以內,該均值爲0。