You can understand Standard deviation normalization, referenced on this web page.
http://www.d.umn.edu/~deoka001/Normalization.html
This web page introduce that..(wrote by
Siddharth Deokar)
-------------------------------------------------------------------------
Normalization by Standard Deviation
We normalize the attribute values by using
standard deviation.
For Example:
Consider 5 instances which has attribute A with the follwing values: {-5, 6, 9, 2, 4}
First we calculate the
mean as follows:
Mean = (-5+6+9+2+4) / 5 =
3.2
Second, we subtract the mean from all the values and square them:
(-5-3.2)^2 = 67.24
(6-3.2)^2 = 7.84
(9-3.2)^2 = 33.64
(2-3.2)^2 = 1.44
(4-3.2)^2 = 0.64
Then we find the
deviation as follows:
Deviation = sqrt ((67.24 + 7.84 + 33.64 + 1.44 + 0.64) / 5) =
4.71
Now we normalize the attribute values:
x => (x - Mean) / Deviation
-5 => (-5 - 3.2) / 4.71 = -1.74
6 => (6 - 3.2) / 4.71 = 0.59
9 => (9 - 3.2) / 4.71 = 1.23
2 => (2 - 3.2) / 4.71 = -0.25
4 => (4 - 3.2) / 4.71 = 0.17
-------------------------------------------------------------------------
This is sample source code:
//
int i,j,z;
double sum=0;
double Mean;
//sum, mean
for(j=0; j< Height; ++j)
{
for(i=0; i< Width; ++i)
{
sum = sum + Pdata[i][j];
}
}
Mean = sum/(Height*Width);
//Deviation
double dSum=0;
double deviation;
double std_dev;
for(j=0; j< Height; ++j)
{
for(i=0; i< Width; ++i)
{
Pdata[i][j] = (Pdata[i][j] - Mean);
dSum = dSum + (Pdata[i][j]*Pdata[i][j]);
}
}
deviation = dSum / (Width*Height);
std_dev = sqrt(deviation);
//Normalization
for(j=0; j< Height; ++j)
{
for(i=0; i< Width; ++i)
{
Pdata[i][j] = (Pdata[i][j] / std_dev);
}
}