目錄
一、標準化和歸一化的目的
1、標準化
2、歸一化
二、標準化和歸一化常用的理論公式
1、歸一化
2、標準化
三、python實現SVM樣本數據標準化和歸一化
1、標準化
2、歸一化
本文源代碼:《機器學習——支持向量機SVM之python實現簡單實例一》
一、標準化和歸一化的目的
1、標準化(scale)
將每個數據特征數據均值變為0,標準差變為1
標準化的目的是為了下一步數據的處理提供方便,而進行數據縮放等變化
?
? 數據的標準化是將數據按比例縮放,使之落入一個小的特定區間。在某些比較和評價的指標處理中經常會用到,去除數據的單位限制,將其轉化為無量綱的純數值,便于不同單位或量級的指標能夠進行比較和加權。
??? 目前數據標準化方法有多種,歸結起來可以分為直線型方法(如極值法、標準差法)、折線型方法(如三折線法)、曲線型方法(如半正態性分布)。不同的標準化方法,對系統的評價結果會產生不同的影響,然而不幸的是,在數據標準化方法的選擇上,還沒有通用的法則可以遵循。
2、歸一化(normalization)
1 把數變為(0,1)或者(-1,1)之間的小數
歸一化的目的是為了消除不同數據之間的量綱,方便數據比較和共同處理
??????? 主要是為了數據處理方便提出來的,把數據映射到0~1范圍之內處理,更加便捷快速,應該歸到數字信號處理范疇之內。
2 把有量綱表達式變為無量綱表達式
??????? 歸一化是一種簡化計算的方式,即將有量綱的表達式,經過變換,化為無量綱的表達式,成為純量。 比如,復數阻抗可以歸一化書寫:Z = R + jωL = R(1 + jωL/R) ,復數部分變成了純數量了,沒有量綱。
另外,微波之中也就是電路分析、信號系統、電磁波傳輸等,有很多運算都可以如此處理,既保證了運算的便捷,又能凸現出物理量的本質含義。
實際上是如下圖所示的決策邊界比較合理,這就需要通過標準化來進行實現,支持向量4個
?
二、標準化和歸一化常用的理論公式
具體怎么計算一個矩陣的均值和方差網上很多不再贅述
1、歸一化
2、標準化
三、python實現SVM樣本數據標準化和歸一化
建議自己按照公式進行編程
1、標準化
?
標準化的公式很簡單,步驟如下
1.求出各變量(指標)的算術平均值(數學期望)xi和標準差si ;
2.進行標準化處理:
zij=(xij-xi)/si
其中:zij為標準化后的變量值;xij為實際變量值。
3.將逆指標前的正負號對調。
標準化后的變量值圍繞0上下波動,大于0說明高于平均水平,小于0說明低于平均水平。
?
常用
from sklearn import preprocessing
import numpy as np
......
x_scaled = preprocessing.scale(x)#x是要進行標準化的樣本數據
......
除了用scale函數,還可以用以下幾種方法對數據進行標準化
#樣本數據歸一化,標準化
from sklearn.preprocessing import StandardScaler
standardscaler = StandardScaler()
#對數組x遍歷,對每一個樣本進行標準化
standardscaler.fit(x)
#返回類StandardScaler()<class'sklearn.preprocessing._data.StandardScaler'>
x_standard = standardscaler.transform(x)#返回標準化后的樣本集
def z_score(x, axis):x = np.array(x).astype(float)xr = np.rollaxis(x, axis=axis)xr -= np.mean(x, axis=axis)xr /= np.std(x, axis=axis)# print(x)return x
def standardize(x):return (x - np.mean(x))/(np.std(x))
?
2、歸一化
def normalize(x):return (x - np.min(x))/(np.max(x) - np.min(x))
?