IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques d'apprentissage automatique Discussion :

distance moyenne pour un cluster


Sujet :

Bibliothèques d'apprentissage automatique

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 36
    Points : 15
    Points
    15
    Par défaut distance moyenne pour un cluster
    salut salut,
    j'ai un petit soucis, parce que j'ignore comment faire !!??

    j'ai un vecteur : label de dimension 960.
    les valeurs de ce vecteur sont entre 0 et 5 .
    C'est un résultat d'un clustering ...
    donc:
    cluster0 ->label = 0
    cluster1 -> label =1 ...etc jusqu'à cluster5-> label = 5

    dans l'algorithme de hirarchical clustering , j'ai introduit une matrice de distance : disgrandtab de dimension 960*960 .. donc, il me les a classé en fonction des distance les plus proches, et j'ai eu 6 clusters .

    comment dois je faire pour calculer la distance moyenne dans chaque cluster ??
    merci pour votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Lyly87 Voir le message
    comment dois je faire pour calculer la distance moyenne dans chaque cluster ??
    Pour regrouper vos objets en cluster, il vous a fallu définir une distance. A partir de là, calculer la distance moyenne d'un cluster ou entre deux clusters devrait être simple, non?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 36
    Points : 15
    Points
    15
    Par défaut
    Au départ je dois d'abord récupérer les indices des distances regroupées dans un label , les sommer puis les diviser par le nombre d'échantillons
    c bien cela non ??

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Montrez plutôt ce que vous avez essayé sur un petit exemple reproductible.
    Exposez les problèmes que vous rencontrez.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 36
    Points : 15
    Points
    15
    Par défaut
    Voilà ce que j'ai commencé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    f=0
    clust0=np.array()
    for f in range (960):
        if label[f]==0:
            clust0 = disgrandtab[??,??]
            print clust0
    J'explique :
    j'ai déclaré f un entier et clust0 un tableau dans lequel j'aimerai par la suite récupérer les distance avec le label 0 ,
    pour f qui va de de la valeur 0 à 960 dimension du vecteur label ,
    si la valeur f dans le label = 0 j'aimerai qu'il me retourne clust0, qui est un tableau contenant les distances avec label 0
    je ne sais pas quoi mettre dans les indices ou j'ai mis les points d'interrogation !!

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    "un petit exemple reproductible" est un code qu'on peut faire fonctionner après un "cut&paste".
    je ne sais pas quoi mettre dans les indices ou j'ai mis les points d'interrogation !!
    Comment a été construit disgrandtab?
    Quelle est la relation entre ses (i, j) et les données de départ?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 36
    Points : 15
    Points
    15
    Par défaut
    Alors je dois tout vous expliquer :
    j'ai des cellules que j'aimerai comparer, sur chaque cellule j'ai 8 points , j'ai les coordonnées de ces points en x et y qui sont représentés par une matrice d de dimension 960*16 (960 parce que j'ai 960 cellules)
    de la colonne indice 0 a l'indice 7 c'est les x et de l'indice 8 à l'indice 15 c'est les y. (parce que je les ai concaténer )
    donc, chaque cellule est représentée par une ligne quoi !


    à partir de cette matrice d j'ai fait toute cette suite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    d_2 = d.copy()**2
    #print d_2
     
    dist=np.zeros((960,8))
    dist = d_2[:,:8]+d_2[:,8:]
     
     
    idx = np.argmax(dist, axis=1)
     
     
    dxn = d[:,:8]
     for ix, shift in enumerate(idx):
        dxn[ix,:] = np.roll( dxn[ix,:], shift)
    print u"\nTableau 'shifte' :\n", dxn
     
     
    dyn = d[:,8:]
    for iy, shift in enumerate(idx):
        dyn[iy,:] = np.roll( dyn[iy,:], shift)
    print u"\nTableau 'shifte' :\n", dyn
     
    dgranddis = np.concatenate([dxn,dyn],axis=1)
     
    disgrandtab = np.zeros((960,960))
     
    for zi in range(0,960):
        vi = dgranddis[zi,:]
        mi = dgranddis[(zi+1):,:]
        ni = mi-vi
        qi = ni**2
        arrays = np.sum(qi[:,0:8]+qi[:,8:16],axis=1)
     
     
        for zii in range(0, arrays.shape[0]):
            disgrandtab[zi,zi+zii+1] = arrays[zii]
            disgrandtab[zi+zii+1,zi] = arrays[zii]
     
    print disgrandtab
     
    plt.imshow(disgrandtab)
    plt.show()
    print disgrandtab.shape
     
    ################################################################## hirarchical clustering 
    import time as time
    import mpl_toolkits.mplot3d.axes3d as p3
    from sklearn.cluster import Ward
    from sklearn.datasets.samples_generator import make_swiss_roll
     
    #################
    X = disgrandtab
    #################
    # Compute clustering
    print "Compute unstructured hierarchical clustering..."
    st = time.time()
    ward = Ward(n_clusters=6).fit(X)
    label = ward.labels_
    #print label
    print "Elapsed time: ", time.time() - st
    print "Number of points: ", label.size
     
    ######################
    # Plot result
    fig = pl.figure()
    ax = p3.Axes3D(fig)
    ax.view_init(7, -80)
    for l in np.unique(label):
        ax.plot3D(X[label == l, 0], X[label == l, 1], X[label == l, 2],
                  'o', color=pl.cm.jet(np.float(l) / np.max(label + 1)))
    pl.title('Without connectivity constraints')
     
    pl.show()

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Ce que je lis, c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    print "Compute unstructured hierarchical clustering..."
    st = time.time()
    ward = Ward(n_clusters=6).fit(X)
    label = ward.labels_
    #print label
    print "Elapsed time: ", time.time() - st
    print "Number of points: ", label.size
    Vous utilisez la fonction de clustering Ward du module sklearn.cluster.
    Pour calculer distance moyenne sur les points d'un cluster, il faut voir comment les récupérer dans l'instance de "ward"... - et seul l'objet sait comment ont été regroupées ces "points".

    A vous de lire la documentation, faire des petits tests pour s'assurer que vous l'avez bien comprise,... Ou attendre l'éclairage avisé d'un lecteur qui a déjà utilisé cette bibliothèque.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. distance moyenne pour un cluster
    Par Lyly87 dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 02/04/2013, 13h23
  2. [Disque Dur] Quel raid pour un cluster ?
    Par vilveq dans le forum Composants
    Réponses: 3
    Dernier message: 16/02/2009, 14h54
  3. calculer des moyennes pour des sous groupes
    Par madib dans le forum SAS Base
    Réponses: 3
    Dernier message: 04/02/2009, 16h50
  4. filtrage moyenner pour image
    Par hassiba_45 dans le forum C++
    Réponses: 1
    Dernier message: 04/03/2008, 13h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo