机器学习中数据标准化相关方法
????????拿到一批原始數(shù)據(jù)后,經(jīng)過對缺失值的填補(bǔ)、異常值的處理以及組合型數(shù)據(jù)的生成,可以得到一份較為完整的數(shù)據(jù)集。但是不同指標(biāo)具有不同的性質(zhì)(連續(xù)、離散)和不同的數(shù)量級,直接進(jìn)行訓(xùn)練會削弱數(shù)量級較低數(shù)據(jù)帶來的影響,所以還需要對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理(目標(biāo)值通常不需要縮放),才能讓數(shù)據(jù)可以投入訓(xùn)練。
????????數(shù)據(jù)標(biāo)準(zhǔn)化就是把有量綱的數(shù)據(jù)變成無量綱的數(shù)據(jù),把量級不同的數(shù)據(jù)處理到同一個量級,從而讓不同緯度的數(shù)據(jù)之間具有可比性,對于機(jī)器學(xué)習(xí)來說,用來提升模型的預(yù)測效果。
????????具體常用的標(biāo)準(zhǔn)化方法有如下幾種:
? ? ? ? 1.Min-max標(biāo)準(zhǔn)化(Min-max normalization)
?? ? ? ?2.z-score標(biāo)準(zhǔn)化(zero-mena normalization)
?? ? ? ?3.log函數(shù)轉(zhuǎn)換
?? ? ? ?4.atan函數(shù)轉(zhuǎn)換
1.Min-max標(biāo)準(zhǔn)化(Min-max normalization)
????????min-max標(biāo)準(zhǔn)化也稱為最小-最大縮放、歸一化。歸一化的邏輯是將數(shù)據(jù)縮放到0~1之間,實(shí)現(xiàn)方法很簡單。是將值減去最小值并除以最大值和最小值之差。 公式為:
????????Scikit-learn提供了一個名為MinMaxScaler的轉(zhuǎn)換器,具體使用方法為:
from sklearn.preprocessing import MinMaxScalerdata = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]] scaler = MinMaxScaler() print(scaler.fit(data)) print("*" * 30) print(scaler.data_max_) print("*" * 30) print(scaler.transform(data))? ? ? ? 結(jié)果為:
MinMaxScaler() ****************************** [ 1. 18.] ****************************** [[0. 0. ][0.25 0.25][0.5 0.5 ][1. 1. ]]? ? ? ? MinMaxScaler可用參數(shù):
? ? ? ? ? ? ? ? feature_rangetuple(min,max), default=(0,1):調(diào)整參數(shù)可以手動設(shè)定要縮放到的具體范圍
2.z-score標(biāo)準(zhǔn)化(zero-mena normalization)
????????z-score標(biāo)準(zhǔn)化方法為先減去平均值(所以標(biāo)準(zhǔn)化的均值總是0),然后除以方差,從而使得結(jié)果的分布具備單位方差,不同于最小最大縮放的是,標(biāo)準(zhǔn)化不將值綁定到特定范圍,對于某些算法來說,可能是個問題(例如,神經(jīng)網(wǎng)絡(luò)期望輸入的值范圍是0~1)。但是標(biāo)準(zhǔn)化的方法受異常值的影響更小。Scikit-Learn提供了一個標(biāo)準(zhǔn)化轉(zhuǎn)換器StandardScaler,具體使用方法為:
from sklearn.preprocessing import StandardScalerdata = [[0, 0], [0, 0], [1, 1], [1, 1]] scaler = StandardScaler() print(scaler.fit(data)) print("*"*30) print(scaler.mean_) print("*"*30) print(scaler.transform(data))? ? ? ? 結(jié)果為
StandardScaler() ****************************** [0.5 0.5] ****************************** [[-1. -1.][-1. -1.][ 1. 1.][ 1. 1.]]3.log函數(shù)轉(zhuǎn)換
?? ? ? ?通過以10為底的log函數(shù)轉(zhuǎn)換的方法同樣可以通過x=log10(x)實(shí)現(xiàn)歸一化,但是要是需要數(shù)據(jù)一定落到[0,1]區(qū)間上,應(yīng)該還要除以log10(max),max為樣本數(shù)據(jù)最大值,并且所有的數(shù)據(jù)都要大于等于1。公式為
?? ? ? ?python中l(wèi)og10函數(shù)計(jì)算方法
import numpy as npy = np.log10(x)import mathy = math.log10(x)4.atan函數(shù)轉(zhuǎn)換
????????用反正切函數(shù)也可以實(shí)現(xiàn)數(shù)據(jù)的歸一化,使用這個方法需要注意的是如果想映射的區(qū)間為[0,1],則數(shù)據(jù)都應(yīng)該大于等于0,小于0的數(shù)據(jù)將被映射到[-1,0]區(qū)間上,公式為
?? ? ? ?python中反正切函數(shù)計(jì)算方法
import mathy = math.atan(x)參考鏈接:數(shù)據(jù)標(biāo)準(zhǔn)化方法 - 知乎
總結(jié)
以上是生活随笔為你收集整理的机器学习中数据标准化相关方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio 安装 FLT
- 下一篇: 简单动画实现