歸一化方法,是數據預處理的一種基本方法之一。對於不同單位和不同數值範圍的特徵,不適合直接進行比較和建模,需要進行歸一化處理。本文將從多個方面對歸一化方法進行詳細闡述,包括最大最小值歸一化、z-score歸一化、小數定標規範化、以及sklearn中庫的使用。
一、最大最小值歸一化
最大最小值歸一化,也稱為離差標準化。其方法是把原始數據(x)轉換為[0, 1]範圍內的值(x_scaled)。
def min_max_scaler(x): x_max = max(x) x_min = min(x) x_scaled = (x - x_min) / (x_max - x_min) return x_scaled
演算法核心:將數據按最大值和最小值的範圍進行縮放,將數據映射到[0,1]的範圍之內。
優點:簡單、易懂、易實現。
缺點:容易受到極值的影響。
二、z-score歸一化
z-score歸一化方法是指將原始數據轉換為標準正態分布的值,使得處理後的數據符合標準正態分布。即將數據轉化為均值為0,標準差為1的分布。
def z_score_scaler(x): x_mean = np.mean(x) x_std = np.std(x) x_scaled = (x - x_mean) / x_std return x_scaled
演算法核心:對於原始數據的每一個數據點,使用z-score歸一化方法進行變換,到均值為0,方差為1的數據分布。
優點:對於數據中的極端值,不會產生太大影響。
缺點:如果數據中存在異常值,或者樣本容量複雜,也會對計算結果產生一定影響。
三、小數定標規範化
小數定標規範化方式是指通過移動小數位置,使得數據落在[-1, 1]之間。其中k值是自己找到一個合適的基數,將原始數據X通過移動小數點對k取整得到x_scaled。
def decimal_scaling(x, k): x_scaled = x / 10 ** k return x_scaled
演算法核心:欄位的值除以一個固定值,及將原始變數除以10進位中的某個數次冪,使變數的幅度更小,變異係數更大。
優點:特別適合數據變化不大,有缺失屬性的數據。
缺點:與其他歸一化方法相比,信息損失量較大。
四、sklearn中庫的使用
sklearn是一個機器學習的強大工具庫,在數據預處理階段,我們也可以利用sklearn中提供的api處理數據。以下是三種歸一化方法在sklearn庫的使用示例。
最大最小值歸一化
from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler(feature_range=(0, 1)) x_scaled = scaler.fit_transform(x)
z-score歸一化
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() x_scaled = scaler.fit_transform(x)
小數定標規範化
from sklearn.preprocessing import PowerTransformer scaler = PowerTransformer() x_scaled = scaler.fit_transform(x)
以上就是多種歸一化方法的詳細講解。在實際應用過程中,需要根據不同數據類型和實際應用場景選擇最合適的方法。
原創文章,作者:IBVBO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332413.html