Erreur de code python

Résolu
lynajar Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir;
je veux calculer le nombre de cluster sur une matrice de similarité,
j'ai utilisé ce code, mais j'ai une erreur d'execution à la ligne 74,
erreur:
TypeError: '(slice(None, None, None), 0)' is an invalid key

# -*- coding: utf-8 -*-
"""
===================================
Demo of DBSCAN clustering algorithm
===================================

Finds core samples of high density and expands clusters from them.

"""
print(__doc__)

import numpy as np
import pandas as pd 
from sklearn.cluster import DBSCAN
from sklearn import metrics
#from sklearn.datasets import make_blobs
from sklearn.preprocessing import StandardScaler

X=pd.read_csv("C:/Users/click/Desktop/doctorat/rfiddd/fichier trouvé resultats/2020-07-22/lev_173.csv", sep=";")
# #############################################################################
# Generate sample data
#centers = [[1, 1], [-1, -1], [1, -1]]
#X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4,
                           # random_state=0)



#X = StandardScaler().fit_transform(X)

# #############################################################################
# Compute DBSCAN
db = DBSCAN(eps=15, min_samples=2).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_

# Number of clusters in labels, ignoring noise if present.
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
print(labels)
n_noise_ = list(labels).count(-1)

print('Estimated number of clusters: %d' % n_clusters_)
print('Estimated number of noise points: %d' % n_noise_)
#print("Homogeneity: %0.3f" % metrics.homogeneity_score(labels_true, labels))
#print("Completeness: %0.3f" % metrics.completeness_score(labels_true, labels))
#print("V-measure: %0.3f" % metrics.v_measure_score(labels_true, labels))
#print("Adjusted Rand Index: %0.3f"
#      % metrics.adjusted_rand_score(labels_true, labels))
#print("Adjusted Mutual Information: %0.3f"
#      % metrics.adjusted_mutual_info_score(labels_true, labels))
#print("Silhouette Coefficient: %0.3f"
#      % metrics.silhouette_score(X, labels))

# #############################################################################
# Plot result
import matplotlib.pyplot as plt

# Black removed and is used for noise instead.
unique_labels = set(labels)
#colors = [plt.cm.Spectral(each)
#          for each in np.linspace(0, 1, len(unique_labels))]

colors=['y','b','g','r']
print (colors)
for k, col in zip(unique_labels, colors):
    if k == -1:
        # Black used for noise.
#        col = [0, 0, 0, 1]
         col='k'

    class_member_mask = (labels == k)

    xy = X[class_member_mask & core_samples_mask]
    plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=col,
             markeredgecolor='k', markersize=6)

    xy = X[class_member_mask & core_samples_mask]
    plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=col,
             markeredgecolor='k', markersize=6)

plt.title('Estimated number of clusters: %d' % n_clusters_)
plt.show()


merci d'avance pour toute aide.

8 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    as-tu comparé le contenu de X par rapport au contenu du programme non modifié?
    0
  2. lynajar Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour;
    marci yg_be pour ton aide,

    le contenu de X est:
    [[ 0.49426097 1.45106697]
    [-1.42808099 -0.83706377]
    [ 0.33855918 1.03875871]
    ...
    [-0.05713876 -0.90926105]
    [-1.16939407 0.03959692]
    [ 0.26322951 -0.92649949]]

    et le contenu de ma base est une matrice de similarité symétrique de taille (173*173)
    voici un exemple:
    1 0.30 0.28 0.25 0.36
    0.30 1 0.39 0.34 0.23
    0.28 0.39 1 0.39 0.28
    0.25 0.34 0.39 1 0.33
    0.36 0.23 0.28 0.33 1

    comment procéder pour appliquer mes données sur cet exemple de code,

    merci
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu partager ton fichier csv?
      0
  3. lynajar Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    voici le lien du fichier
    https://www.cjoint.com/c/JItkswlIksa
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      pourquoi la ligne 28 est-elle commentée?
      0
  4. lynajar Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    normalement d’après mon fichier elle est pas commenté!!!
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      regarde le code que tu as partagé.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lynajar Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    oui c'est vrai dans le code que j'ai partagé la ligne 28 est commenté,
    comme le programme ne voulais pas s'executer, alors j'ai mis cette ligne en commentaire, pour voire si l'erreur vien de cette ligne
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      as-tu essayé de rétablir cette ligne?
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        as-tu essayé de rétablir cette ligne?
        0
  7. lynajar Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    an recherchant sur internet, j'ai fait cette modification concernant l'importation du fichier csv,
    la première erreur ne s'affiche plus, mais maintenant j'ai une autre erreur à la ligne 32:
    ValueError: could not convert string to float: '0.307692307692308;1;0.392857142857143;

    voici le code avec modification à partir de la ligne 21 jusqu'a la ligne 23

    import numpy as np
    import pandas as pd 
    from sklearn.cluster import DBSCAN
    from sklearn import metrics
    from sklearn.datasets import make_blobs
    from sklearn.preprocessing import StandardScaler
    from pandas import read_csv
    
    #rcParams['figure.figsize'] = 70, 40
    csv_url = 'C:/Users/click/Desktop/doctorat/rfiddd/fichier trouvé resultats/2020-07-22/bisim_173.csv'
    df = pd.read_csv(csv_url)
    df.iloc[:, 0:172].values 
    #X=pd.read_csv("C:/Users/click/Desktop/doctorat/rfiddd/fichier trouvé resultats/2020-07-22/bisim_173.csv", sep=";")
    # #############################################################################
    # Generate sample data
    #centers = [[1, 1], [-1, -1], [1, -1]]
    #X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4,
                               # random_state=0)
    
    
    df = StandardScaler().fit_transform(df)
    
    # #############################################################################
    # Compute DBSCAN
    db = DBSCAN(eps=50, min_samples=3).fit(df)
    core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
    core_samples_mask[db.core_sample_indices_] = True
    labels = db.labels_
    
    # Number of clusters in labels, ignoring noise if present.
    n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
    print(labels)
    n_noise_ = list(labels).count(-1)
    
    print('Estimated number of clusters: %d' % n_clusters_)
    print('Estimated number of noise points: %d' % n_noise_)
    #print("Homogeneity: %0.3f" % metrics.homogeneity_score(labels_true, labels))
    #print("Completeness: %0.3f" % metrics.completeness_score(labels_true, labels))
    #print("V-measure: %0.3f" % metrics.v_measure_score(labels_true, labels))
    #print("Adjusted Rand Index: %0.3f"
    #      % metrics.adjusted_rand_score(labels_true, labels))
    #print("Adjusted Mutual Information: %0.3f"
    #      % metrics.adjusted_mutual_info_score(labels_true, labels))
    #print("Silhouette Coefficient: %0.3f"
    #      % metrics.silhouette_score(X, labels))
    
    # #############################################################################
    # Plot result
    import matplotlib.pyplot as plt
    
    # Black removed and is used for noise instead.
    unique_labels = set(labels)
    #colors = [plt.cm.Spectral(each)
    #          for each in np.linspace(0, 1, len(unique_labels))]
    
    colors=['y','b','g','r']
    print (colors)
    for k, col in zip(unique_labels, colors):
        if k == -1:
            # Black used for noise.
    #        col = [0, 0, 0, 1]
             col='k'
    
        class_member_mask = (labels == k)
    
        xy = df[class_member_mask & core_samples_mask]
        plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=col,
                 markeredgecolor='k', markersize=6)
    
        xy = df[class_member_mask & core_samples_mask]
        plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=col,
                 markeredgecolor='k', markersize=6)
    
    plt.title('Estimated number of clusters: %d' % n_clusters_)
    plt.show()
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      comprends-tu ce que tu as changé?
      0
  8. lynajar Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    iloc est utilisée pour l'indexation basée sur des emplacements entiers, elle permet de sélectionner les colonnes, en utilisant une notation de découpage.

    mon but c'est l'utilisation de la méthode dbscan pour regrouper mon fichier csv en classes,
    pour cela j'ai essayer plusieurs solutions mais ça na pas marché,

    désolé pour les fautes de programmation, parce que je débute avec le langage python
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      si t fais un changement que tu ne comprends pas et qui provoque une erreur, pourquoi ne pas faire marche arrière?
      0
  9. lynajar Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    j'ai fait un marche arrière comme tu me la demandé "yg_be" et ça marche,et j'ai supprimer le commentaire de la ligne 28.
    merci beaucoup pour ton aide
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu alors marquer la discussion comme résolue?
      0