資料歸一化和連續資料離散化處理

2021-09-25 18:26:35 字數 3102 閱讀 9471

資料歸一化處理

1. 0-1標準化

2. z-score標準化

#1. 0-1標準化

#將資料的最大最小值記錄下來,並通過max-min作為基數,進行資料的歸一化處理

#2. z-score標準化

#z分數,是乙個分數與平均數的差再除以標準差的過程

#z值的量代表著原始分數和母體平均值之間的距離,是以標準差為單位計算,在原始分數低於平均值時,z則為負數,反之為證書

df=pd.dataframe(

)def

f_z(df,

*cols)

: df_n=df.copy(

)for col in cols:

u=df_n[col]

.mean(

) std=df_n[col]

.std(

) df_n[col+

'_zn']=

(df_n[col]

-u)/std

return

(df_n)

df_zn=f_z(df,

'v1'

,'v2'

)df_zn

u_zn=df_zn[

'v1_zn'

].mean(

)std_zn=df_zn[

'v1_zn'

].std(

)print

('標準化後v1的均值為:%.2f ,標準差為:%.2f'

%(u_zn,std_zn)

)#經過處理的資料符合標準正態分佈,即均值為0,標準差為1

#什麼情況下用z-score標準化

#在分類、聚類演算法中,需要使用距離來度量相似性的時候,z-score表現更好

資料連續屬性離散化

連續屬性變換為分類屬性:在數值的取值範圍內設定若干個離散劃分點,將取值範圍化為一些離散化的區間,最後用不同的符號或整數值代表每個子區間中資料值

等寬法/等頻法

#等寬法

#cut方法

ages=[20

,22,25

,27,21

,23,37

,31,61

,45,42

,32]#將年齡劃分為18-25,26-35,36-60,60以上

bins=[18

,25,35

,60,100

]cats=pd.cut(ages,bins)

print

(cats.codes)

#分組編號

print

(cats.categories)

#四個區間,結果為index

print

(pd.value_counts(cats)

)#按區間計數

print

(pd.cut(ages,bins,right=

false))

#預設右閉

#等頻法:以相同數量的記錄放進每個區間

#qcut方法

data=np.random.randn(

1000

)s=pd.series(data)

cats=pd.qcut(s,4)

print

(pd.value_counts(cats)

)#qcut 根據樣本分位數對資料進行面元劃分,得到大小基本相等的面元,但並不能保證每個面元含有相同資料個數

#也可以設定成自定義的分位數(0-1之間的數,包含端點):pd.qcut(data,[0,0.1,0.5,0.9,1])

資料歸一化處理 特徵歸一化

1 定義 資料的歸一化處理,即將資料統一對映到 0,1 區間上。2 方法 1 最大最小標準化 min max normalization 本歸一化方法又稱為離差標準化,使結果值對映到 0 1 之間,轉換函式如下 應用場景 在不涉及距離度量 協方差計算 資料不符合正太分布的時候,可以使用第一種方法或其...

資料離散化和歸一化

資料離散化和歸一化 在進行資料分析時,通常需要對資料進行歸一化和離散化的操作 from pylab import from numpy import import codecs import matplotlib.pyplot as plt import operator 新加了乙個庫,用於排序 i...

資料離散化處理

離散化,把無限空間中有限的個體對映到有限的空間中去,以此提高演算法的時空效率。通俗的說,離散化是在不改變資料相對大小的條件下,對資料進行相應的縮小。例如 原資料 1,999,100000,15 處理後 1,3,4,2 原資料 處理後 例如有時需要將資料直接作為陣列下標,但因為資料太大而無法開陣列時,...