
The following is a JSP code for K-MEANS CLUSTERING .... My proect , titled "Pattern Analysis of Web Usage for System Improvement", involves the web log info from a database and then considering the attributes IP address and WEBPAGES,IN THE FORM OF NUMBERS(X,Y) for K-MEANS CLUSTERING... the output of this is used for WEB CACHE REPLACEMENT.. please let me knw,if the following code of K-MEANS CLUSTERING in JSP is proper and will take 2 dimenshional input(ip,webpages)... i m having hard time in converting ip and webpages into number for K-MEANS CLUSTERING...please reply.
<html>
<head>
<script type="text/javascript">
function kmeans( arrayToProcess, Clusters )
{
var Groups = new Array();
var Centroids = new Array();
var oldCentroids = new Array();
var changed = false;
// order the input array
arrayToProcess.sort(function(a,b){return a - b})
// initialise group arrays
for( initGroups=0; initGroups < Clusters; initGroups++ )
{
Groups[initGroups] = new Array();
}
// pick initial centroids
initialCentroids=Math.round( arrayToProcess.length/(Clusters+1) );
for( i=0; i<Clusters; i++ )
{
Centroids[i]=arrayToProcess[ (initialCentroids*(i+1)) ];
}
do
{
for( j=0; j<Clusters; j++ )
{
Groups[j] = [];
}
changed=false;
for( i=0; i<arrayToProcess.length; i++ )
{
Distance=-1;
oldDistance=-1
for( j=0; j<Clusters; j++ )
{
distance = Math.abs( Centroids[j]-arrayToProcess[i] );
if ( oldDistance==-1 )
{
oldDistance = distance;
newGroup = j;
}
else if ( distance <= oldDistance )
{
newGroup=j;
oldDistance = distance;
}
}
Groups[newGroup].push( arrayToProcess[i] );
}
oldCentroids=Centroids;
for ( j=0; j<Clusters; j++ )
{
total=0;
newCentroid=0;
for( i=0; i<Groups[j].length; i++ )
{
total+=Groups[j][i];
}
newCentroid=total/Groups[newGroup].length;
Centroids[j]=newCentroid;
}
for( j=0; j<Clusters; j++ )
{
if ( Centroids[j]!=oldCentroids[j] )
{
changed=true;
}
}
}
while( changed==true );
return Groups;
}
</script>
</head>
<html>
If you are facing any programming issue, such as compilation errors or not able to find the code you are looking for.
Ask your questions, our development team will try to give answers to your questions.