數據標准化方法及其Python代碼實現


 

數據的標准化(normalization)是將數據按比例縮放,使之落入一個小的特定區間。目前數據標准化方法有多種,歸結起來可以分為直線型方法(如極值法、標准差法)、折線型方法(如三折線法)、曲線型方法(如半正態性分布)。不同的標准化方法,對系統的評價結果會產生不同的影響,然而不幸的是,在數據標准化方法的選擇上,還沒有通用的法則可以遵循。

常見的方法有:min-max標准化(Min-max normalization),log函數轉換,atan函數轉換,z-score標准化(zero-mena normalization,此方法最為常用),模糊量化法,均值歸一化。本文只介紹min-max標准化、Z-score標准化方法、均值歸一化、log函數轉換、atan函數轉換

data = [1, 3, 4, 5, 2, 13, 23, 71, 11, 19, 9, 24, 38]

一、min-max標准化(Min-Max Normalization)

也稱為離差標准化,是對原始數據的線性變換,使結果值映射到[0 - 1]之間。轉換函數如下:

 

from __future__ import print_function, division


# min-max標准化方法
data0 = [(x - min(data))/(max(data) - min(data)) for x in data]

二、Z-score標准化方法

這種方法給予原始數據的均值(mean)和標准差(standard deviation)進行數據的標准化。經過處理的數據符合標准正態分布,即均值為0,標准差為1,轉化函數為:

from __future__ import print_function
import math


# 均值
average = float(sum(data))/len(data)


# 方差
total = 0
for value in data:
    total += (value - average) ** 2
 
stddev = math.sqrt(total/len(data))


# z-score標准化方法
data1 = [(x-average)/stddev for x in data]

三、均值歸一化

兩種方式,以max為分母的歸一化方法和以max-min為分母的歸一化方法

from __future__ import print_function

# 均值
average = float(sum(data))/len(data)


# 均值歸一化方法
data2_1 = [(x - average )/max(data) for x in data]

data2_2 = [(x - average )/(max(data) - min(data)) for x in data]

 四、log函數轉換方法

from __future__ import print_function

import math


# log2函數轉換
data3_1 = [math.log2(x) for x in data]


# log10函數轉換
data3_2 = [math.log10(x) for x in data]

 五、atan函數轉換方法

from __future__ import print_function

import math


# atan函數轉換方法
data4 = [math.atan(x) for x in data]


免責聲明!

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



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