# Min-Max normalization for uniform vectors

66 views (last 30 days)
JohnDylon on 9 Oct 2016
Edited: JohnDylon on 19 Nov 2016
Hi,
Can anyone have any point on how to normalize a single number, say 1000, into a range of [-1,1]? Or even a uniform vector of say [1000 1000 1000 1000] into the same range as suggested above?
Normalizing a non-uniform data is trivial. Say the data is v=[1 3 5 7] and we normalize input 5, then
(v(3)-(min(v)))*(1-(-1))/(max(v)-min(v))+(-1)
is the formula I should follow. How about, v is uniform, thus generates a zero denominator in the formula?
JD
##### 2 CommentsShowHide 1 older comment
JohnDylon on 9 Oct 2016
I thought to assign 0 for the uniform vector, however this made me think of what the difference should be between [1000 1000 1000] and [2 2 2] if I scale down them to same number between [-1,1]? If I do that, I loose information.

Jan on 9 Oct 2016
A normalization requires a range of data. Either this range is predefined or it is determined by the values. A single number or a vector of equal numbers does not have a range. Therefore a normalization requires a predefined knowledge of the possible range of values. Without knowing "min(v)" and "max(v)", a normalization is not possible.
JohnDylon on 9 Oct 2016
You are right, however from scaling up or down point of view, there should be a way to represent points that are not in a given interval at another one. I suspect a probability distribution does the job.

KSSV on 9 Oct 2016
Other ways of normalizing are:
Divide each element by the norm of the array. doc norm for this.
Divide each element by maximum of the array.
JohnDylon on 9 Oct 2016
I thought such as z-score normalization as well, however it also may gives zero variance, which would make normalization broken at some point.