python數(shù)據(jù)歸一化及三種方法詳解
數(shù)據(jù)標(biāo)準(zhǔn)化(歸一化)處理是數(shù)據(jù)挖掘的一項(xiàng)基礎(chǔ)工作,不同評(píng)價(jià)指標(biāo)往往具有不同的量綱和量綱單位,這樣的情況會(huì)影響到數(shù)據(jù)分析的結(jié)果,為了消除指標(biāo)之間的量綱影響,需要進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化處理,以解決數(shù)據(jù)指標(biāo)之間的可比性。原始數(shù)據(jù)經(jīng)過(guò)數(shù)據(jù)標(biāo)準(zhǔn)化處理后,各指標(biāo)處于同一數(shù)量級(jí),適合進(jìn)行綜合對(duì)比評(píng)價(jià)。以下是三種常用的歸一化方法:
min-max標(biāo)準(zhǔn)化(Min-Max Normalization)
也稱為離差標(biāo)準(zhǔn)化,是對(duì)原始數(shù)據(jù)的線性變換,使結(jié)果值映射到[0 , 1]之間。轉(zhuǎn)換函數(shù)如下:
其中max為樣本數(shù)據(jù)的最大值,min為樣本數(shù)據(jù)的最小值。這種方法有個(gè)缺陷就是當(dāng)有新數(shù)據(jù)加入時(shí),可能導(dǎo)致max和min的變化,需要重新定義。
min-max標(biāo)準(zhǔn)化python代碼如下:
import numpy as np arr = np.asarray([0, 10, 50, 80, 100]) for x in arr: x = float(x - np.min(arr))/(np.max(arr)- np.min(arr)) print x # output # 0.0 # 0.1 # 0.5 # 0.8 # 1.0
使用這種方法的目的包括:
1、對(duì)于方差非常小的屬性可以增強(qiáng)其穩(wěn)定性;
2、維持稀疏矩陣中為0的條目。
下面將數(shù)據(jù)縮至0-1之間,采用MinMaxScaler函數(shù)
from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
min_max_scaler = preprocessing.MinMaxScaler()
X_minMax = min_max_scaler.fit_transform(X)
最后輸出:
array([[ 0.5 , 0. , 1. ],
[ 1. , 0.5 , 0.33333333],
[ 0. , 1. , 0. ]])
測(cè)試用例:
注意:這些變換都是對(duì)列進(jìn)行處理。
當(dāng)然,在構(gòu)造類對(duì)象的時(shí)候也可以直接指定最大最小值的范圍:feature_range=(min, max),此時(shí)應(yīng)用的公式變?yōu)椋?/p>
X_std=(X-X.min(axis=0))/(X.max(axis=0)-X.min(axis=0)) X_minmax=X_std/(X.max(axis=0)-X.min(axis=0))+X.min(axis=0))
Z-score標(biāo)準(zhǔn)化方法
也稱為均值歸一化(mean normaliztion), 給予原始數(shù)據(jù)的均值(mean)和標(biāo)準(zhǔn)差(standard deviation)進(jìn)行數(shù)據(jù)的標(biāo)準(zhǔn)化。經(jīng)過(guò)處理的數(shù)據(jù)符合標(biāo)準(zhǔn)正態(tài)分布,即均值為0,標(biāo)準(zhǔn)差為1。轉(zhuǎn)化函數(shù)為:
其中 μμ 為所有樣本數(shù)據(jù)的均值,σσ為所有樣本數(shù)據(jù)的標(biāo)準(zhǔn)差。
import numpy as np arr = np.asarray([0, 10, 50, 80, 100]) for x in arr: x = float(x - arr.mean())/arr.std() print x # output # -1.24101045599 # -0.982466610991 # 0.0517087689995 # 0.827340303992 # 1.34442799399
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
教你pycharm運(yùn)行Django第一個(gè)項(xiàng)目
本文主要介紹了教你pycharm運(yùn)行Django第一個(gè)項(xiàng)目的實(shí)現(xiàn),文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
Pycharm報(bào)錯(cuò)Environment?location?directory?is?not?empty問(wèn)題及
這篇文章主要介紹了Pycharm報(bào)錯(cuò)Environment?location?directory?is?not?empty問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
Python3中urllib庫(kù)添加請(qǐng)求頭的兩種方式
Python?3中的urllib模塊可以用來(lái)處理URL,包括下載和上傳文件、創(chuàng)建和讀取cookie、訪問(wèn)Web?API等,本文給大家介紹Python3中urllib庫(kù)添加請(qǐng)求頭的兩種方式,感興趣的朋友一起看看吧2023-10-10
Python爬蟲 scrapy框架爬取某招聘網(wǎng)存入mongodb解析
這篇文章主要介紹了Python爬蟲 scrapy框架爬取某招聘網(wǎng)存入mongodb解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Python讀取圖像并顯示灰度圖的實(shí)現(xiàn)
這篇文章主要介紹了Python讀取圖像并顯示灰度圖的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
基于django channel實(shí)現(xiàn)websocket的聊天室的方法示例
這篇文章主要介紹了基于基于django channel實(shí)現(xiàn)websocket的聊天室的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
2021年的Python 時(shí)間軸和即將推出的功能詳解
這篇文章主要介紹了2021年的Python 時(shí)間軸和即將推出的功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Python使用scipy模塊實(shí)現(xiàn)一維卷積運(yùn)算示例
這篇文章主要介紹了Python使用scipy模塊實(shí)現(xiàn)一維卷積運(yùn)算,結(jié)合實(shí)例形式分析了scipy模塊的功能及使用scipy模塊進(jìn)行一維卷積運(yùn)算的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09

