Created
March 4, 2015 00:18
-
-
Save rootasjey/1863d72eba00487f5b21 to your computer and use it in GitHub Desktop.
Algo de Technique de regroupement (CLUSTERING) en Data Maning
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ------------------------------------- | |
// 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