我迷失了規範化,請問有人可以指導我。
我有一個最小值和最大值,分別是-23.89和7.54990767。
如果我有一個值5.6878如何將這個值縮放為0到1。
我迷失了規範化,請問有人可以指導我。
我有一個最小值和最大值,分別是-23.89和7.54990767。
如果我有一個值5.6878如何將這個值縮放為0到1。
如果要標準化數據,可以按照建議進行操作,只需計算以下內容即可:
$$ z_i = \ frac {x_i- \ min(x)} {\ max(x)-\ min(x)} $$ span>
其中 $ x =(x_1 ,. ..,x_n)$ span>和 $ z_i $ span>現在是您的 $ i ^ {th} $ 跨度>標準化數據。作為概念證明(儘管您並沒有要求),下面是一些 R
代碼和隨附的圖形來說明這一點:
#示例Datax = sample(-100:100,50)#Normalized Datanormalized =(x-min(x))/(max(x)-min(x) )#示例數據和規範化數據的直方圖par(mfrow = c(1,2))hist(x,breaks = 10,xlab =“ Data”,col =“ lightblue”,main =“”)hist(規範化,breaks = 10,xlab =“標準化數據”,col =“ lightblue”,main =“”)
一般的單行公式,用於將已觀察到的 min 和 max 的數據值線性重新縮放到新的任意範圍 min'至 max'是
newvalue =(max'-min')/(max-min)*(value-max)+ max'或newvalue =(max'-min ')/(最大-最小)*(值-最小)+最小'。
這是我用於規範化的PHP實現:
function normalize($ value,$ min,$ max){$ normalized =($ value-$ min)/($ max-$分鐘); return $ normalized;}
但是當我構建自己的人工神經網絡時,我需要將規範化的輸出轉換回原始數據,以獲得圖形的良好可讀性輸出。
函數denormalize($ normalized,$ min,$ max){$ denormalized =($ normalized *($ max-$ min)+ $ min); return $ denormalized;} $ int = 12; $ max = 20; $ min = 10; $ normalized = normalize($ int,$ min,$ max); // 0.2 $ denormalized = denormalize($ normalized,$ min,$ max); // 12
反規範化使用以下公式:
$ x(\ text {max}-\ text {min})+ \ text {min} $
要記住的一件事是, max-min
可以等於零。在這種情況下,您不想執行該劃分。
這種情況將在您要規範化的列表中的所有值都相同時發生。為了規範化這樣的列表,每個項目應為 1 /長度
。
// JavaScript
函數normalize(list){
var minMax = list.reduce((acc,value)= > {
if(值< acc.min){
acc.min =值;
}
if(值> acc.max){
acc.max =值;
}
返回acc;
},{最小:Number.POSITIVE_INFINITY,最大:Number.NEGATIVE_INFINITY});
返回list.map(value = > {
//確認您不會被零除
如果(minMax.max === minMax.min){
返回1 / list.length
}
var diff = minMax.max-minMax.min;
返回(值-minMax.min)/差異;
});
}
normalize([3,3,3,3]); //輸出= > [0.25、0.25、0.25、0.25]
嘗試一下。它與函數 scale
歸一化<-函數(x){x <- as.matrix(x)minAttr = apply(x,2,min )maxAttr = apply(x,2,max)x <-掃描(x,2,minAttr,FUN =“-”)x = sweep(x,2,maxAttr-minAttr,“ /”)attr(x,'歸一化:min')= minAttr attr(x,'normalized:max')= maxAttr return(x)}
答案是正確的,但我有一個建議,如果您的訓練數據遇到超出範圍的數字,您可以使用擠壓技術。它將保證永遠不會超出範圍。而不是這個
我建議使用此
,以最小和最大範圍
,並且預期範圍外間隙的大小與將存在範圍外值的置信度成正比。 / p>
有關更多信息,您可以穀歌:壓制超出範圍的數字,並參閱“ dorian pyle”的數據準備書
這是我的 Python
實現,用於使用 padas
庫進行規範化:
Mean規範化:
normalized_df =(df-df.mean())/ df.std()
Min-Max歸一化:
normalized_df =(df-df.min())/(df.max()-df.min())
選擇一個累積概率分佈F。然後,對於每個x,F(x)在0和1之間。