原始因子處理之手寫標準化函式

2021-10-06 17:59:44 字數 1955 閱讀 1915

一、標準化

**實現(z_score方法標準化)

def standardlize(data, inf2nan=true, axis=1):

'''引數

-----------

data: pd.series/pd.dataframe/np.array, 待標準化的序列

inf2nan: 是否將 np.inf 和 -np.inf 替換成 np.nan。預設為 true

axis=1: 在 data 為 pd.dataframe 時使用,如果 series 為 pd.dataframe,沿哪個方向做標準化。0 為對每列做標準化,1 為對每行做標準化

返回-----------

標準化後的因子資料

'''if isinstance(data,pd.dataframe):

value = data.copy()

if axis==1:

long = value.shape[0]

for i in range(long):

s = value.iloc[i,:]

if inf2nan==true:

s[np.isinf(s)]=np.nan

mean = np.mean(s.dropna())

std = np.std(s.dropna(),ddof=1)

value.iloc[i,:] = (s-mean)/std

else:

s1 = s[~np.isinf(s)]

mean = np.mean(s1)

std = np.std(s1,ddof=1)

value.iloc[i,:] = (s-mean)/std

return value

elif axis==0:

width = value.shape[1]

for j in range(width):

s = value.iloc[:,j]

if inf2nan==true:

s[np.isinf(s)]=np.nan

mean = np.mean(s.dropna())

std = np.std(s.dropna(),ddof=1)

value.iloc[:,j] = (s-mean)/std

else:

s1 = s[~np.isinf(s)]

mean = np.mean(s1)

std = np.std(s1,ddof=1)

value.iloc[:,j] = (s-mean)/std

return value

else:

return('axis值有誤')

elif isinstance(data,pd.series):

value = data.copy()

if inf2nan==true:

value[np.isinf(value)]=np.nan

mean = np.mean(value.dropna())

std = np.std(value.dropna(),ddof=1)

value = (value-mean)/std

return value

else:

s = value[~np.isinf(value)]

mean = np.mean(s)

std = np.std(s,ddof=1)

value = (value-mean)/std

return value

else:

print('data不是pd.series和pd.dataframe型別')

return

最大最小標準化 數值 標準化的好處及常見處理方法

在多指標評價體系中,由於各評價指標的性質不同,通常具有不同的量綱和數量級。當各指標間的水平相差很大時,如果直接用原始指標值進行分析,就會突出數值較高的指標在綜合分析中的作用,相對削弱數值水平較低指標的作用。因此,為了保證結果的可靠性,需要對原始指標資料進行標準化處理。資料的標準化 normaliza...

資料預處理之標準化

近來趁專案間隔期,工作不是太多,也在利用空餘時間把資料分析的完整流程用python實現一遍,也恰好整理下這幾年手頭的一些資料,順序可能比較亂,後期再慢慢調整。資料的標準化 normalization 是將資料按照一定規則縮放,使之落入乙個小的特定區間。這樣去除資料的單位限制,將其轉化為無量綱的純數值...

資料預處理 資料標準化

x train np.array 1,1,2 2,0,0 0,1,1 min max scaler preprocessing.minmaxscaler x train minmax min max scaler.fit transform x train print x train minmax ...