April 6, 2010
After reading an article by Howard Yeend (Pure Mango) I decided I would try to write a version of the basic learn algorithm.
Below is what I came up with.
function kmeans( arrayToProcess, Clusters ) { var Groups = new Array(); var Centroids = new Array(); var oldCentroids = new Array(); var changed = false; // 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; }
Download the script (right click and choose save target as)
I’ve expanded the script now to support multiple dimensions, you can see my script here.
Filed under: Mathematics,Programming — Tags: algorithm, javascript, k means, learning, mathematics, maths — admin @ 8:35 pmAugust 9, 2009
For the people that went to school with me (17 years ago) they may remember a game called Snake. The objective was simple move the snake around with the arrow keys and eat the apples (your snake got longer). The game was seen as a waste of school resources and banned…this didn’t stop me from writing a replacement. Having taken a trip down memory lane I thought it might be fun to rewrite the game in Flash (….I must be bored). Anyway here it is Snake for Flash
Stay tuned for my next experiment….a Flash game for the Wii
Filed under: Programming — Tags: flash, fun and games, game, nibbles, old school, snake, wii, worms — admin @ 6:39 pmHandy tools for creating the various cards the game uses, dungeon, magic, event and treasure
Create your own unexpected event cards
Create your own monster event cards
Powered by WordPress