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

Calcul scientifique Python Discussion :

erreur de code python


Sujet :

Calcul scientifique Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2020
    Messages : 12
    Points : 15
    Points
    15
    Par défaut erreur de code python
    Bonjour,
    je veux appliquer les deux méthodes K-means et classification hiérarchique ascendante sur une matrice de similarité pour identifier les différentes cluster,
    j'ai réalisé un code Python, mais j'ai une erreur d'exécution:

    ValueError: could not convert string to float: '0,366666667'
    voici mon code:

    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
    73
    74
    75
    import pandas as pd
    from pandas import read_csv
    import numpy as np
    from matplotlib import pyplot as plt
    from pylab import rcParams
    from scipy.cluster.hierarchy import dendrogram
    from sklearn.cluster import AgglomerativeClustering, KMeans
     
     
    # figure size
    rcParams['figure.figsize'] = 70, 40
     
     
    def plot_dendrogram(model, labels, **kwargs):
        """ Create linkage matrix and then plot the dendrogram """
     
        # create the counts of samples under each node
        counts = np.zeros(model.children_.shape[0])
        n_samples = len(model.labels_)
     
        for i, merge in enumerate(model.children_):
            current_count = 0
            for child_idx in merge:
                if child_idx < n_samples:
                    current_count += 1  # leaf node
                else:
                    current_count += counts[child_idx - n_samples]
            counts[i] = current_count
     
        linkage_matrix = np.column_stack([model.children_, model.distances_,
                                          counts]).astype(float)
     
        # Plot the corresponding dendrogram
        dendrogram(linkage_matrix, labels=labels, **kwargs)
     
     
    def main(sim_mat, names):
     
        # load the similarity matrix
        df = pd.read_csv(sim_mat, delimiter=";", header=None)
        matrix = df.to_numpy()
     
        # perform the clustering
        model_1 = AgglomerativeClustering(n_clusters=None, affinity="precomputed",
                                          linkage="average", distance_threshold=0)
     
        # NOTE the number of clusters is here!!
        model_2 = KMeans(n_clusters=40)
     
        # get the names
        de = pd.read_csv(names, encoding="latin-1", header=None)
        labels = de[0].to_list()
     
        # print("Sizes:", matrix.shape, len(labels))
     
        model_1 = model_1.fit(matrix)
        model_2 = model_2.fit(matrix)
        return model_1, model_2, labels
     
     
    if __name__ == "__main__":
     
        model_1, model_2, labels = main(sim_mat='C:/Users/click/Desktop/doctorat/rfiddd/fichier trouvé resultats/2020-07-22/FDA_matrice_bisim.csv',
                                        names='C:/Users/click/Desktop/doctorat/rfiddd/fichier trouvé resultats/2020-07-22/FDA_med-unique.csv')
     
        # print the KMeans results
        print("KMeans results")
        for name, cluster in zip(labels, model_2.labels_):
            print(f"- {name:<25}: {cluster}")
     
        # plot the top three levels of the dendrogram
        print("\nCreating the dendrogram...")
        plot_dendrogram(model_1, labels=labels, truncate_mode='level')
        plt.savefig("dendrogram.png")
        print("Done!")
    merci d'avance pour vos aides

  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
    Salut,

    L'erreur vous donne l'instruction qui plante, si vous ne la postez pas c'est que vous n'avez pas trop compris l'intérêt d'y jeter un œil.

    Ceci dit, si çà se vautre avec "ValueError: could not convert string to float: '0,366666667'", c'est probablement aux lignes 40 ou 41...

    Le fichier CSV contient des nombres flottants ou la partie décimale est signalée par ne ',' plutôt que par '.'.

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2020
    Messages : 12
    Points : 15
    Points
    15
    Par défaut
    Bonsoir,
    merci wiztricks pour ton aide;

    effectivement c'était ça le problème,
    j'ai une autre question si c'est possible,
    concernant le découpage du dendrogramme, il m'affiche 3 couleurs différente, ça veux dire qu'il a trouver 3 classes, mais dans cas c'est pas logique 3 classes avec 285 échantillon,
    comment faire pour corriger le découpage?

  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
    Salut,

    Citation Envoyé par zozoarc Voir le message
    concernant le découpage du dendrogramme, il m'affiche 3 couleurs différente, ça veux dire qu'il a trouver 3 classes, mais dans cas c'est pas logique 3 classes avec 285 échantillon
    Ce qui dépend des données, des moulinettes à leur appliquer et l'évaluation de la pertinence du résultat. Ce n'est pas un sujet de programmation python mais de "modélisation", d'étude statistique,... de conception.

    Pour savoir, il faudrait reprendre les données, établir ce qu'on veut en tirer puis définir la démarche et écrire le code qui va en face, ce qui demande du temps et une motivation que je n'ai pas.

    De plus, pour triturer des données d'un domaine (génétique, géographie, atrophysique,...), il faut avoir la culture/formation du domaine en question qui va permettre de dire ce qu'on peut faire des données et valider que le résultat n'est pas trop faux (l'expérience accumulée du domaine dit que...)

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

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    Citation Envoyé par wiztricks Voir le message

    Ceci dit, si çà se vautre avec "ValueError: could not convert string to float: '0,366666667'", c'est probablement aux lignes 40 ou 41...

    Le fichier CSV contient des nombres flottants ou la partie décimale est signalée par ne ',' plutôt que par '.'.

    - W

    Bien vuuuuuuuu .... !

    inutile certes, mais il fallait souligner la perspicacité de wiztricks.

Discussions similaires

  1. Erreur code python avec la 18.04 Mate
    Par MPython Alaplancha dans le forum Ubuntu
    Réponses: 0
    Dernier message: 05/05/2020, 16h33
  2. Réponses: 27
    Dernier message: 23/10/2019, 16h23
  3. Erreur : ce code n'est pas connu
    Par ruman dans le forum VBA Access
    Réponses: 17
    Dernier message: 13/02/2006, 11h37
  4. [MySQL] Erreur dans code php
    Par Badr3am dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 31/01/2006, 22h16
  5. Erreur de code
    Par petdelascar dans le forum C
    Réponses: 7
    Dernier message: 12/12/2005, 08h15

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