基于數(shù)據(jù)歸一化以及Python實(shí)現(xiàn)方式
數(shù)據(jù)歸一化:
數(shù)據(jù)的標(biāo)準(zhǔn)化是將數(shù)據(jù)按比例縮放,使之落入一個小的特定區(qū)間,去除數(shù)據(jù)的單位限制,將其轉(zhuǎn)化為無量綱的純數(shù)值,便于不同單位或量級的指標(biāo)能夠進(jìn)行比較和加權(quán)。
為什么要做歸一化:
1)加快梯度下降求最優(yōu)解的速度
如果兩個特征的區(qū)間相差非常大,其所形成的等高線非常尖,很有可能走“之字型”路線(垂直等高線走),從而導(dǎo)致需要迭代很多次才能收斂。
2)有可能提高精度
一些分類器需要計算樣本之間的距離,如果一個特征值域范圍非常大,那么距離計算就主要取決于這個特征,從而與實(shí)際情況相悖(比如這時實(shí)際情況是值域范圍小的特征更重要)。
歸一化類型
1)線性歸一化
這種歸一化比較適用在數(shù)值比較集中的情況,缺陷就是如果max和min不穩(wěn)定,很容易使得歸一化結(jié)果不穩(wěn)定,使得后續(xù)的效果不穩(wěn)定,實(shí)際使用中可以用經(jīng)驗(yàn)常量來代替max和min。
2)標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化
經(jīng)過處理的數(shù)據(jù)符合標(biāo)準(zhǔn)正態(tài)分布,即均值為0,標(biāo)準(zhǔn)差為1。
3)非線性歸一化
經(jīng)常用在數(shù)據(jù)分化較大的場景,有些數(shù)值大,有些很小。通過一些數(shù)學(xué)函數(shù),將原始值進(jìn)行映射。該方法包括log、指數(shù)、反正切等。需要根據(jù)數(shù)據(jù)分布的情況,決定非線性函數(shù)的曲線。
log函數(shù):x = lg(x)/lg(max)
反正切函數(shù):x = atan(x)*2/pi
Python實(shí)現(xiàn)
線性歸一化
定義數(shù)組:x = numpy.array(x)
獲取二維數(shù)組列方向的最大值:x.max(axis = 0)
獲取二維數(shù)組列方向的最小值:x.min(axis = 0)
對二維數(shù)組進(jìn)行線性歸一化:
def max_min_normalization(data_value, data_col_max_values, data_col_min_values): """ Data normalization using max value and min value Args: data_value: The data to be normalized data_col_max_values: The maximum value of data's columns data_col_min_values: The minimum value of data's columns """ data_shape = data_value.shape data_rows = data_shape[0] data_cols = data_shape[1] for i in xrange(0, data_rows, 1): for j in xrange(0, data_cols, 1): data_value[i][j] = \ (data_value[i][j] - data_col_min_values[j]) / \ (data_col_max_values[j] - data_col_min_values[j])
標(biāo)準(zhǔn)差歸一化
定義數(shù)組:x = numpy.array(x)
獲取二維數(shù)組列方向的均值:x.mean(axis = 0)
獲取二維數(shù)組列方向的標(biāo)準(zhǔn)差:x.std(axis = 0)
對二維數(shù)組進(jìn)行標(biāo)準(zhǔn)差歸一化:
def standard_deviation_normalization(data_value, data_col_means, data_col_standard_deviation): """ Data normalization using standard deviation Args: data_value: The data to be normalized data_col_means: The means of data's columns data_col_standard_deviation: The variance of data's columns """ data_shape = data_value.shape data_rows = data_shape[0] data_cols = data_shape[1] for i in xrange(0, data_rows, 1): for j in xrange(0, data_cols, 1): data_value[i][j] = \ (data_value[i][j] - data_col_means[j]) / \ data_col_standard_deviation[j]
非線性歸一化(以lg為例)
定義數(shù)組:x = numpy.array(x)
獲取二維數(shù)組列方向的最大值:x.max(axis=0)
獲取二維數(shù)組每個元素的lg值:numpy.log10(x)
獲取二維數(shù)組列方向的最大值的lg值:numpy.log10(x.max(axis=0))
對二維數(shù)組使用lg進(jìn)行非線性歸一化:
def nonlinearity_normalization_lg(data_value_after_lg, data_col_max_values_after_lg): """ Data normalization using lg Args: data_value_after_lg: The data to be normalized data_col_max_values_after_lg: The maximum value of data's columns """ data_shape = data_value_after_lg.shape data_rows = data_shape[0] data_cols = data_shape[1] for i in xrange(0, data_rows, 1): for j in xrange(0, data_cols, 1): data_value_after_lg[i][j] = \ data_value_after_lg[i][j] / data_col_max_values_after_lg[j]
以上這篇基于數(shù)據(jù)歸一化以及Python實(shí)現(xiàn)方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- python 機(jī)器學(xué)習(xí)的標(biāo)準(zhǔn)化、歸一化、正則化、離散化和白化
- 如何基于python實(shí)現(xiàn)歸一化處理
- python數(shù)據(jù)歸一化及三種方法詳解
- python實(shí)現(xiàn)幾種歸一化方法(Normalization Method)
- 詳解python實(shí)現(xiàn)數(shù)據(jù)歸一化處理的方式:(0,1)標(biāo)準(zhǔn)化
- python numpy 按行歸一化的實(shí)例
- Python數(shù)據(jù)預(yù)處理之?dāng)?shù)據(jù)規(guī)范化(歸一化)示例
- python 實(shí)現(xiàn)對數(shù)據(jù)集的歸一化的方法(0-1之間)
- 對python3 一組數(shù)值的歸一化處理方法詳解
- 如何用Pythony驗(yàn)證萬物歸一(考拉咨猜想)
相關(guān)文章
python爬蟲簡單的添加代理進(jìn)行訪問的實(shí)現(xiàn)代碼
本文通過實(shí)例代碼給大家介紹了python爬蟲簡單的添加代理進(jìn)行訪問,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04python使用正則表達(dá)式(Regular Expression)方法超詳細(xì)
這篇文章主要介紹了python使用正則表達(dá)式(Regular Expression)方法超詳細(xì),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Python在for循環(huán)中更改list值的方法【推薦】
這篇文章主要介紹了Python在for循環(huán)中更改list值的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08如何使用?Python為你的在線會議創(chuàng)建一個假的攝像頭
這篇文章主要介紹了使用?Python為你的在線會議創(chuàng)建一個假的攝像頭,在?Python?的幫助下,不再強(qiáng)制開啟攝像頭,將向你展示如何為你的在線會議創(chuàng)建一個假的攝像頭,需要的朋友可以參考下2022-08-08Vue的el-scrollbar實(shí)現(xiàn)自定義滾動
本篇文章給大家分享了Vue的el-scrollbar實(shí)現(xiàn)自定義滾動實(shí)現(xiàn)的過程和實(shí)例代碼,對此有需要的朋友可以參考下。2018-05-05基于Python實(shí)現(xiàn)銀行卡識別的示例代碼
銀行卡識別是一個在金融、安全等領(lǐng)域具有重要應(yīng)用的問題,本文主要為大家介紹了如何使用Python和深度學(xué)習(xí)技術(shù)來實(shí)現(xiàn)銀行卡識別功能,需要的可以參考下2024-03-03