三、標准化數據


(一)離差標准化數據
離差表轉化是對原始數據的一種線性變換,結果是將原始的數據映射到[0,1]區間之間,轉換公式為:
其中 max 為樣本數據的最大值,min 為樣本數據的最小值,max-min 為極差。利差標准化保留了原始數據值之間的聯系,是消除量綱和數據取值范圍影響最簡單的方法。離差標准化的特點:
(1)數據的整體分布情況並不會隨離差標准化而發生改變,原先取值較大的數據,在做完離差標准化后的值依舊較大。
(2)當數據和最小值相等的時候,通過離差標准化可以發現數據變為 0。
(3)若數據極差過大就會出現數據在離差標准化后數據之間的差值非常小的情況。
(4)同時,還可以看出離差標准化的缺點:若數據集中某個數值很大,則離差標准化的值就會接近於 0,並且相互之間差別不大。若將來遇到超過目前屬性[min,max]取值范圍的時候,會引起系統出錯,這時便需要重新確定 min 和max。
 1 # 標准化
 2 # 1、離差標准化
 3 # 對數據的線性變化,將數據映射到[0,1]范圍
 4 # new_x = (x - min) /(max -min)
 5 # min 表示該列最小值, max表示該列的最大值
 6 # 特點:
 7 # (1)轉化之后,大數據還是較大的,小數據還是較小的
 8 # (2)當數據為最小值,轉化為的數據為0
 9 # (3)極差過大--->分母過大--->整體的數據偏小 ---之間差異不太明顯
10 # (4) 如果數據中的某個數值很大,分母很大,--整體趨向於0
11 # 標准化之后,要記錄下,最小值、最大值--->計算原始數據
12 # 如果出現新的數據,不在之前記錄[min,max]之間---轉化之后,>1或者<0的情況
13 # 實現離差標准化
1 def min_max_sca(data):
2     """
3     離差標准化
4     :param data: series/dataframe
5     :return: 標准化之后的數據
6     """
7     data = (data - data.min()) / (data.max() - data.min())
8 
9     return data
(二)標准差標准化數據
標准差標准化也叫零均值標准化或分數標准化,是當前使用最廣泛的數據標准化方法。

 

 

經過該方法處理后的均值為 0,標准差為 1,轉化公式為:其中 X 為原始數據的均值, 為原始數據的標准差。標准差后的值區間不局限於[0,1],並且存在負值。同時也不難發現,標准差標准化和離差標准化一樣不會改變數據的分布情況
 
 
 
1 # 2、標准差標准化
2 # 目前使用最為廣泛的一種標准化數據的方式
3 # 將數據轉化為均值為0,標准差為的1 數據--->將數據轉化為服從標准正態分布的數據
4 # new_x = (x - mean) / std
5 # 特點:
6 # (1)標准化之后的數據不僅局限於[0,1],可以為正的,也可以為負的,總之,均值為0,標准差為1
7 # (2)不會影響數據的整體分布,大的值轉化之后還是較大的,小的值轉化之后還是較小的
1 def stand_sca(data):
2     """
3     標准差標准化數據
4     :param data: series/datafrmae
5     :return: 標准化之后的數據
6     """
7     data = (data - data.mean()) / data.std()
8 
9     return data

 

(三)小數定標標准化數據
通過移動數據的小數位數,將數據映射到區間[-1,1]之間,移動的小數位數取決於數據絕對值的最大值。轉化公式如下: 

 

 

 1 # 3、小數定標標准化
 2 # 通過移動小數點的位置來進行數據轉化,將數據轉化為[-1,1]之間
 3 # 小數點移動的位數 取決於該列數據絕對值的最大值
 4 # new_x = x / 10 ^ k
 5 # k ---> log10(|x|.max()) 向上取整 ---轉化int
 6 # 假設存在一列數據 --->該列數據 [-99,99]之間
 7 # a、該列數據取絕對值---[0,99]
 8 # b、取絕對值的最大值---99
 9 # c、對99進行取log10對數 --->(1,2)小數
10 # d、對 (1,2)小數 ---向上取整 ---> 2.0
11 # e、轉化為int ---> 2  --->k = 2
12 # f、根據公式 分母 =100,--->小數點向左移動2位 ---->[-0.99,0.99]之間
13 # 特點:
14 # (1)將數據映射到[-1,1]區間
15 # (2)數據的分布不會變化,大的數據轉化之后還是較大的,小的數據轉化之后還是小的
16 
17 # 實現小數定標標准化
18 def desc_sca(data):
19     """
20     小數定標標准化
21     :param data: series/dataframe
22     :return: 標准化之后的數據
23     """
24     # abs() --取絕對值
25     # np.ceil --向上取整
26     data = data / (10 ** (int(np.ceil(np.log10(data.abs().max())))))
27 
28     return data
(四)三種標准化的特點:
離差標准化方法簡單,便於理解,標准化后的數據限定在[0,1]區間內;
標准差標准化收到數據分布的影響較小;
小數定標標准化方法的適用范圍廣,並且受到數據分布的影響較小,相比較於前面兩種方法而言該方法適用程度適中。 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM