Range Normalization is a normalization technique that allows you to map a number to a specific range.

Lets say that we have a data set where the values are in a range of 1 to 10, however we wish to normalise it to a range between 0 and 5

Mathematically speaking the equation comes down to

translated to Python

``````class Normaliser:

def \_\_init\_\_(self,dH,dL,nH,nL):
self.dH = dH
self.dL = dL
self.nH = nH
self.nL = nL

def normalize(self,x):
return ((x - self.dL) / (self.dH - self.dL))  * (self.nH - self.nL) + self.nL

def denormalize(self,x):
return ((self.dL - self.dH) * x - self.nH * self.dL + self.dH * self.nL) / (self.nL - self.nH)

if \_\_name\_\_ == "\_\_main\_\_":
norm = Normaliser(10,1,5,0);

for a in range(1,11):
x = norm.normalize(a);
y = norm.denormalize(x);
print str(a) + " : " + str(x) + " : " + str(y)
``````

The results

``````2 : 0.555555555556 : 2.0
3 : 1.11111111111 : 3.0
4 : 1.66666666667 : 4.0
5 : 2.22222222222 : 5.0
6 : 2.77777777778 : 6.0
7 : 3.33333333333 : 7.0
8 : 3.88888888889 : 8.0
9 : 4.44444444444 : 9.0
10 : 5.0 : 10.0
``````

Hope this helps.