Skip to content

Instantly share code, notes, and snippets.

@rootasjey
Created March 4, 2015 00:18
Show Gist options
  • Save rootasjey/1863d72eba00487f5b21 to your computer and use it in GitHub Desktop.
Save rootasjey/1863d72eba00487f5b21 to your computer and use it in GitHub Desktop.
Algo de Technique de regroupement (CLUSTERING) en Data Maning
// -------------------------------------
// ALGORITHME DE CLUSTURING (JAVASCRIPT)
// -------------------------------------
// REMARQUES :
// - L'affichage final des groupes n'est pas correctement structuré
// ce qui rend la lecture des points difficile.
// - Une seule itération de l'algo est faite.
// Il faudrait en faire plusieurs et s'arrêter si les centres ne bougent plus
// lors du re-calcul de ces derniers.
// Algo de clustering
function clustering() {
var k=2; // nombre de centres
var centres; // tableau de centres
centres = [[1,3], [5,7]];
var gp1, gp2; // tableaux (groupes) contenant les différents points
gp1 = [];
gp2 = [];
// Valeurs initiales des points à classer
var values = [[1,2],[2,4],[1,3],[2,8],[2,3],[5,7],
[3,3],[4,6],[2,1],[2,2],[4,7],[4,8],[5,6],
[1,4],[6,6],[6,5],[5,3],[6,9],[5,8],[7,7]];
// Log stats (un p'tit affichage)
console.log("nombre de centres : " + k);
console.log("centres : " + centres);
console.log("values : " + values);
// Le Process
for (var i = 0; i < values.length; i++) {
var d1 = 0; // distance au 1er centre
var d2 = 0; // distance au 2è centre
for (var j = 0; j < k; j++) {
// Calcule de l'abscisse
var abs = (centres[j][0] - values[i][0]);
abs *= abs;
// Calcule de l'ordonnée
var ord = (centres[j][1] - values[i][1]);
ord *= ord;
// Sommation pour obtenir la distance
var d = abs + ord;
// Sachant qu'on a 2 centres,
// lors du premier passage dans cette boucle
// on sauvegarde le premier résultat dans d1,
// et le second résultat (de la somme) dans d2
if (j==0) d1 = d;
else d2 = d;
}
// Décide dans quel groupe le point doit être envoyé
if (d1 < d2) gp1.push(values[i]);
else gp2.push(values[i]);
}
// Affiche les différents groupe à la fin de l'algorithme (des boucles)
console.log("groupe1 : " + gp1);
console.log("groupe2 : " + gp2);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment