這篇文章將為大家詳細(xì)講解有關(guān)如何使用sklearn進(jìn)行對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化、歸一化以及將數(shù)據(jù)還原,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的波密網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!在對(duì)模型訓(xùn)練時(shí),為了讓模型盡快收斂,一件常做的事情就是對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。
這里通過(guò)使用sklearn.preprocess模塊進(jìn)行處理。
一、標(biāo)準(zhǔn)化和歸一化的區(qū)別
歸一化其實(shí)就是標(biāo)準(zhǔn)化的一種方式,只不過(guò)歸一化是將數(shù)據(jù)映射到了[0,1]這個(gè)區(qū)間中。
標(biāo)準(zhǔn)化則是將數(shù)據(jù)按照比例縮放,使之放到一個(gè)特定區(qū)間中。標(biāo)準(zhǔn)化后的數(shù)據(jù)的均值=0,標(biāo)準(zhǔn)差=1,因而標(biāo)準(zhǔn)化的數(shù)據(jù)可正可負(fù)。
二、使用sklearn進(jìn)行標(biāo)準(zhǔn)化和標(biāo)準(zhǔn)化還原
原理:
即先求出全部數(shù)據(jù)的均值和方差,再進(jìn)行計(jì)算。
最后的結(jié)果均值為0,方差是1,從公式就可以看出。
但是當(dāng)原始數(shù)據(jù)并不符合高斯分布的話,標(biāo)準(zhǔn)化后的數(shù)據(jù)效果并不好。
導(dǎo)入模塊
from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import MinMaxScaler from matplotlib import gridspec import numpy as np import matplotlib.pyplot as plt
通過(guò)生成隨機(jī)點(diǎn)可以對(duì)比出標(biāo)準(zhǔn)化前后的數(shù)據(jù)分布形狀并沒(méi)有發(fā)生變化,只是尺度上縮小了。
cps = np.random.random_integers(0, 100, (100, 2)) ss = StandardScaler() std_cps = ss.fit_transform(cps) gs = gridspec.GridSpec(5,5) fig = plt.figure() ax1 = fig.add_subplot(gs[0:2, 1:4]) ax2 = fig.add_subplot(gs[3:5, 1:4]) ax1.scatter(cps[:, 0], cps[:, 1]) ax2.scatter(std_cps[:, 0], std_cps[:, 1]) plt.show()
sklearn.preprocess.StandardScaler的使用:
先是創(chuàng)建對(duì)象,然后調(diào)用fit_transform()方法,需要傳入一個(gè)如下格式的參數(shù)作為訓(xùn)練集。
X : numpy array of shape [n_samples,n_features]Training set. data = np.random.uniform(0, 100, 10)[:, np.newaxis] ss = StandardScaler() std_data = ss.fit_transform(data) origin_data = ss.inverse_transform(std_data) print('data is ',data) print('after standard ',std_data) print('after inverse ',origin_data) print('after standard mean and std is ',np.mean(std_data), np.std(std_data))
通過(guò)invers_tainsform()方法就可以得到原來(lái)的數(shù)據(jù)。
打印結(jié)果如下:
可以看到生成的數(shù)據(jù)的標(biāo)準(zhǔn)差是1,均值接近0。
data is [[15.72836992] [62.0709697 ] [94.85738359] [98.37108557] [ 0.16131774] [23.85445883] [26.40359246] [95.68204855] [77.69245742] [62.4002485 ]] after standard [[-1.15085842] [ 0.18269178] [ 1.12615048] [ 1.22726043] [-1.59881442] [-0.91702287] [-0.84366924] [ 1.14988096] [ 0.63221421] [ 0.19216708]] after inverse [[15.72836992] [62.0709697 ] [94.85738359] [98.37108557] [ 0.16131774] [23.85445883] [26.40359246] [95.68204855] [77.69245742] [62.4002485 ]] after standard mean and std is -1.8041124150158794e-16 1.0
三、使用sklearn進(jìn)行數(shù)據(jù)的歸一化和歸一化還原
原理:
從上式可以看出歸一化的結(jié)果跟數(shù)據(jù)的大值最小值有關(guān)。
使用時(shí)類似上面的標(biāo)準(zhǔn)化
data = np.random.uniform(0, 100, 10)[:, np.newaxis] mm = MinMaxScaler() mm_data = mm.fit_transform(data) origin_data = mm.inverse_transform(mm_data) print('data is ',data) print('after Min Max ',mm_data) print('origin data is ',origin_data)
結(jié)果:
G:\Anaconda\python.exe G:/python/DRL/DRL_test/DRL_ALL/Grammar.py data is [[12.19502214] [86.49880021] [53.10501326] [82.30089405] [44.46306969] [14.51448347] [54.59806596] [87.87501465] [64.35007178] [ 4.96199642]] after Min Max [[0.08723631] [0.98340171] [0.58064485] [0.93277147] [0.47641582] [0.11521094] [0.59865231] [1. ] [0.71626961] [0. ]] origin data is [[12.19502214] [86.49880021] [53.10501326] [82.30089405] [44.46306969] [14.51448347] [54.59806596] [87.87501465] [64.35007178] [ 4.96199642]] Process finished with exit code 0
其他標(biāo)準(zhǔn)化的方法:
上面的標(biāo)準(zhǔn)化和歸一化都有一個(gè)缺點(diǎn)就是每當(dāng)來(lái)一個(gè)新的數(shù)據(jù)的時(shí)候就要重新計(jì)算所有的點(diǎn)。
因而當(dāng)數(shù)據(jù)是動(dòng)態(tài)的時(shí)候可以使用下面的幾種計(jì)算方法:
1、arctan反正切函數(shù)標(biāo)準(zhǔn)化:
2、ln函數(shù)標(biāo)準(zhǔn)化
關(guān)于“如何使用sklearn進(jìn)行對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化、歸一化以及將數(shù)據(jù)還原”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
標(biāo)題名稱:如何使用sklearn進(jìn)行對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化、歸一化以及將數(shù)據(jù)還原-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://muchs.cn/article46/csgjhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、品牌網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、建站公司、App設(shè)計(jì)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容