pandas:数据规范化方法与python实现
這里就不說(shuō)為什么要做數(shù)據(jù)規(guī)范化了,直接講幾種規(guī)范化的方法。
有許多規(guī)范化的方法,我們將學(xué)習(xí)種:最大-最小規(guī)范化、分?jǐn)?shù)規(guī)范化、小數(shù)定標(biāo)規(guī)范化。這里令是數(shù)值屬性,具有個(gè)觀測(cè)值。
一、原理
1.最大-最小規(guī)范化
假設(shè)和分別為屬性的最大值和最小值。最小-最大規(guī)范化通過(guò)計(jì)算
? ? ? ? ? ?
把A的值映射到區(qū)間,中的。
最小-最大規(guī)范化保持原始數(shù)據(jù)值之間的聯(lián)系。如果今后的輸入實(shí)例落在的原數(shù)據(jù)值域之外,則該方法將面臨“越界”錯(cuò)誤。
2.分?jǐn)?shù)(z-score)規(guī)范化(或零均值規(guī)范化)
屬性?的值基于?的均值(即平均值)和標(biāo)準(zhǔn)差規(guī)范化。的值被規(guī)范化為,由下式計(jì)算:
? ? ? ? ? ?
其中,和分別為屬性??的均值和標(biāo)準(zhǔn)差。
上面的標(biāo)準(zhǔn)差可以用均值絕對(duì)偏差替換。?的均值絕對(duì)偏差(mean absolute deviation)?定義為
? ? ? ? ? ?
這樣,使用均值絕對(duì)差的?分?jǐn)?shù)規(guī)范化為
? ? ? ? ? ?
對(duì)于離群點(diǎn),均值絕對(duì)偏差 比標(biāo)準(zhǔn)差更加魯棒。在計(jì)算均值絕對(duì)偏差時(shí),不對(duì)到均值的偏差即取平方,因此離群點(diǎn)的影響多少有點(diǎn)降低。
3.小數(shù)定標(biāo)規(guī)范化
小數(shù)定標(biāo)規(guī)范化通過(guò)移動(dòng)屬性值的小數(shù)定位置進(jìn)行規(guī)范化。小數(shù)點(diǎn)的移動(dòng)位數(shù)依賴于的最大絕對(duì)值。A的值被規(guī)范化為,由下式計(jì)算:
? ? ? ? ? ??
其中是使得的最小整數(shù)。
舉例:
假設(shè)?的取值由 到 。 的最大絕對(duì)值為 。因此,為使用小數(shù)定標(biāo)規(guī)范化,我們用 (即)除每個(gè)值。因此, 被規(guī)范化為 ,而?被規(guī)范化為 。
注意,規(guī)范化可能將原來(lái)的數(shù)據(jù)改變很多,特別是使用 分?jǐn)?shù)規(guī)范化或小數(shù)定標(biāo)規(guī)范化時(shí)尤其如此。有必要保留規(guī)范化參數(shù)(如均值和標(biāo)準(zhǔn)差,如果使用?分?jǐn)?shù)規(guī)范化的話),以便將來(lái)的數(shù)據(jù)可以用一致的方式規(guī)范化。
4.歸一化方法
由下式進(jìn)行計(jì)算:
? ? ? ? ? ??
則且無(wú)量綱,并且顯然有。
二、代碼實(shí)現(xiàn)
#-*- coding: utf-8 -*- #數(shù)據(jù)規(guī)范化 import pandas as pd import numpy as npdatafile = '../data/normalization_data.xls' #參數(shù)初始化 data = pd.read_excel(datafile, header = None) #讀取數(shù)據(jù)(data - data.min())/(data.max() - data.min()) #最小-最大規(guī)范化 (data - data.mean())/data.std() #零-均值規(guī)范化 data/10**np.ceil(np.log10(data.abs().max())) #小數(shù)定標(biāo)規(guī)范化?
?
總結(jié)
以上是生活随笔為你收集整理的pandas:数据规范化方法与python实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: keras:Sequential API
- 下一篇: 机器学习性能度量(1):P-R曲线与RO