您好,登錄后才能下訂單哦!
今天小編給大家分享一下Python如何實現(xiàn)歸一化算法的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
歸一化算法Normalization
將數(shù)據(jù)處理成量綱一直的數(shù)據(jù),一般限定在[0,1]、[-1,1]
一般在進(jìn)行建模的時候需要進(jìn)行數(shù)據(jù)歸一化處理,
原因如下:
降低計算難度
有可能提高模型的預(yù)測精度
消除量綱影響
下面介紹三種常見的標(biāo)準(zhǔn)化方法,分別是最大最小值、正態(tài)中心化、小數(shù)點定標(biāo)
1.找一組數(shù)據(jù)的最大最小值
2.利用公式歸一化
3.輸入結(jié)果(為了方便可視化展示,我們設(shè)計了代碼)
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 1.最小最大標(biāo)準(zhǔn)化 Data = np.array([[0.2,0.9,29], [0.9,0.1,100], [0.5,0.5,30]]) #最?。畲髿w一化算法 # 1.1數(shù)據(jù)轉(zhuǎn)化 def MinMax(data): min = 0 max = 1 C = data[:,2] min = np.min(C) max = np.max(C) for one in data: one[2] = (one[2]-min) / (max-min) print('轉(zhuǎn)化后的矩陣:\n',data) return data # 1.2可視化 def ShowData(Data,ShowD1): length = len(Data) X = np.ones(Data.shape[0]) plt.figure(1) plt.subplot(121) for i in range(length): plt.scatter(X*(i+1),Data[:,i]) plt.subplot(122) for i in range(length): plt.scatter(X*(i+1),ShowD1[:,i]) plt.show() ShowData(Data,MinMax(Data.copy()))
轉(zhuǎn)化后的矩陣:
[[0.2 0.9 0. ]
[0.9 0.1 1. ]
[0.5 0.5 0.01408451]]
數(shù)據(jù)規(guī)模過大不適應(yīng)
數(shù)據(jù)歸一化后范圍在[0,1],對于一些有負(fù)有正數(shù)的原始數(shù)據(jù)慎用
輸入數(shù)據(jù)
求取數(shù)據(jù)的均值、方法,在利用中心化公式計算
輸出結(jié)果
def Zscore(data): x_mean = np.mean(data[:2]) length = len(data[:,2]) vari = np.sqrt((np.sum((data[:2]-x_mean)**2))/length) print('方差:',vari) data[:,2] = (data[:,2]-x_mean)/vari print('Z-score標(biāo)準(zhǔn)化后的矩陣是',data) return data ShowData(Data,Zscore(Data.copy()))
方差: 51.569160680908254
Z-score標(biāo)準(zhǔn)化后的矩陣是 [[0.2 0.9 0.13864876]
[0.9 0.1 1.5154406 ]
[0.5 0.5 0.15804019]]
對樣本量少的數(shù)據(jù),表現(xiàn)不好
標(biāo)準(zhǔn)化后范圍在有負(fù)有正,范圍在[-1,1]
輸入數(shù)據(jù)
絕對值化,最大值
將每個數(shù)除以最大值的數(shù)量級
輸入數(shù)據(jù)
# 小數(shù)定標(biāo)歸一化算法 def Decimals(data): C = np.abs(data[:,2]) max = int(np.sort(C)[-1]) # 按從小到大排序,取最后一位,及最大值 k = len(str(max)) print('絕對值最大的位數(shù):\n',k) data[:2] = data[:,2] /(10**k) print('小數(shù)點定標(biāo)準(zhǔn)化后的矩陣:\n',data) return data ShowData(Data,Decimals(Data.copy()))
絕對值最大的位數(shù):
3
小數(shù)點定標(biāo)準(zhǔn)化后的矩陣:
[[2.9e-02 1.0e-01 3.0e-02]
[2.9e-02 1.0e-01 3.0e-02]
[5.0e-01 5.0e-01 3.0e+01]]
受到最大值影響較大
以上就是“Python如何實現(xiàn)歸一化算法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。