kMeansTemplate.py

Aller à la documentation de ce fichier.
00001 #-------------------------------------------------------------------------------
00002 print "Algorithme de k-means"
00003 print "\t@version: 1.2  date: 26/06/2007 modified by Thomas Leaute"
00004 print "\t@version: 1.1  date: 25/05/2007 modified by Thomas Leaute"
00005 print "\t@version: 1.0  date: 05/03/2007 created by Thomas Leaute"
00006 print "\t@author: thomas.leaute _AT_ epfl.ch date: 09/05/2007"
00007 print "\t@copyright: EPFL-IC-IIF-LIA 2007"
00008 #-------------------------------------------------------------------------------
00009 ## @package kMeansTemplate Algorithme de k-means
00010 
00011 ## @file kMeansTemplate.py Algorithme de k-means
00012 
00013 import copy
00014 execfile("distance.py")
00015 
00016 ## Noyaux de l'iteration precedente 
00017 VIEUXNOYAUX = [] 
00018 
00019 ## Liste des clusters courants 
00020 CLUSTERS = [] 
00021 
00022 ## \brief Affiche les clusters dans un format lisible
00023 # @param clusters Liste des clusters a afficher
00024 def afficheClusters (clusters):
00025         print "*********************"
00026         print "Clusters :"
00027         for cluster in clusters: 
00028                 if len(cluster) > 0:
00029                         print "Donnees :", cluster[0]
00030                         for donnee in cluster[1:]:
00031                                 print "         ", donnee 
00032         print "*********************"
00033 
00034 ## \brief Associe chaque donnee au plus proche noyau
00035 # @param noyaux Liste des noyaux
00036 # @return La liste des clusters. La premiere donnee de chaque cluster est son noyau. 
00037 def formeClusters (noyaux):
00038         print "a completer"
00039 
00040 
00041 ## \brief Recentre le noyau d'un cluster passe en parametre. 
00042 # 
00043 # Le nouveau noyau est place en tete de la liste qui represente le cluster. 
00044 # @param cluster Le cluster dont le noyau doit etre recentre
00045 # @return Le cluster dont le noyau a ete recentre
00046 def recentreNoyau (cluster):
00047         print "a completer"
00048         
00049         
00050 ## \brief Affiche les noyaux dans un format lisible 
00051 # @param noyaux Liste des noyaux a afficher
00052 def afficheNoyaux (noyaux):
00053         if len(noyaux) > 0:
00054                 print "Noyaux  :", noyaux[0]
00055                 for noyau in noyaux[1:]:
00056                         print "         ", noyau
00057                         
00058 
00059 ## \brief Affiche le resultat du clustering, i.e. la liste des clusters
00060 def afficheResultat ():
00061         afficheClusters(CLUSTERS)
00062         
00063 
00064 ## \brief Initialise l'algorithme
00065 # 
00066 # Construit la liste \c CLUSTERS. Initialement, le premier cluster contient toutes les donnees (sauf les autres noyaux)
00067 # @param k Nombre de clusters desires 
00068 # @param listeNoyaux Liste des noyaux. Si pas specifiee, prend les k premieres donnees comme noyaux
00069 def chargeDonnees (k, listeNoyaux = None):
00070         global CLUSTERS
00071 
00072         noyaux = listeNoyaux
00073         if noyaux == None:
00074                 # Par defaut on choisit les k premieres donnees comme noyaux
00075                 noyaux = DONNEES[0:k]
00076                 afficheNoyaux(noyaux)
00077         
00078         # Initialement, par defaut, affecte toutes les donnees au premier noyau : 
00079         print "a completer"
00080         
00081 
00082 ## \brief Retourne la liste des noyaux
00083 # @return La liste des premiers elements de chaque cluster
00084 def retourneNoyaux ():
00085         print "a completer"
00086 
00087 
00088 ## \brief Retourne si la liste de clusters passee en parametre est satisfaisante, ou s'il faut continuer a iterer
00089 # @return True si la liste des noyaux n'a pas change depuis l'iteration precedente 
00090 def fini ():
00091         print "a completer"
00092         
00093         
00094 ## \brief Boucle principale qui met a jour les clusters
00095 def reviseClusters ():
00096         global VIEUXNOYAUX, CLUSTERS
00097 
00098         noyaux = retourneNoyaux() 
00099         VIEUXNOYAUX = copy.deepcopy(noyaux)
00100         
00101         # Forme les clusters autour des noyaux :
00102         CLUSTERS = formeClusters(noyaux)
00103         
00104         # Recentre le noyau de chaque cluster :
00105         CLUSTERS = [recentreNoyau(cluster) for cluster in CLUSTERS]
00106 #       afficheClusters(CLUSTERS)
00107 
00108 
00109 ############################
00110 
00111 # Charge la base de donnees :
00112 execfile("maladies.py")
00113 #execfile("profits.py")
00114 
00115 # Initialise l'algorithme de k-means :
00116 chargeDonnees(4) 
00117 
00118 # Lance l'agorithme de clustering :
00119 execfile("clustering.py")

Généré le Wed Jan 30 17:16:42 2008 pour Lab 9 : Clustering par  doxygen 1.5.2