Partage
  • Partager sur Facebook
  • Partager sur Twitter

[COURS] Analyse exploratoire de données

ACP et clustering

    20 septembre 2018 à 17:32:53

    Bonjour ! Voilà le fil de discussion dédié au cours Réalisez une analyse exploratoire de données.

    N'hésitez pas à échanger les uns avec les autres !

    Si vous avez une question concernant le fonctionnement du cours (accès aux exercices, envoi des exercices, inscription au cours…), contactez directement OpenClassrooms : http://oc.cm/contact 

    Bon courage et à bientôt !

    -
    Edité par OsitoLoco1 22 septembre 2022 à 18:31:22

    • Partager sur Facebook
    • Partager sur Twitter
      18 octobre 2018 à 7:30:54

      Bonjour,

      Merci pour ce cours très intéressant. Savez-vous quand les vidéos seront ajoutées ?

      Bonne journée,

      • Partager sur Facebook
      • Partager sur Twitter
        12 novembre 2018 à 5:47:20

        Bonjour, 

        J'ai aussi trouvé le cours très intéressant, merci à vous pour votre travail !

        • Partager sur Facebook
        • Partager sur Twitter
          12 novembre 2018 à 10:45:48

          AlexandreBardiaux a écrit:

          Bonjour,

          Merci pour ce cours très intéressant. Savez-vous quand les vidéos seront ajoutées ?

          Bonne journée,


          Les vidéos sont ajoutées ;)
          • Partager sur Facebook
          • Partager sur Twitter
            4 décembre 2018 à 13:28:27

            Bonjour,

            Existe-t-il une version R des codes en Python fournis dans le cadre du cours?

            Merci,

            Alexandre.

            • Partager sur Facebook
            • Partager sur Twitter
              10 décembre 2018 à 12:07:31

              Bonjour Alexandre,

              Malheureusement, il n'y a pas de version R à l'heure actuelle.

              En R, les fonctions sont déjà toutes faites et il y a beaucoup moins de code. Si vous avez compris le principe, c'est déjà très bien. Pour le code en question, je vous invite à regarder ces ressources (qui se répètent un peu entre elles) :

              http://factominer.free.fr/index_fr.html

              • Factominer est un package phare en R spécialisé dans l’analyse exploratoire multivariée (ACP, CAH, etc.) Retrouvez un exemple d’ACP avec Factominer à cette adresse.

              http://www.sthda.com/english/articles/31-principal-component-methods-in-r-practical-guide/117-hcpc-hierarchical-clustering-on-principal-components-essentials/

              • Tutoriel en anglais de clustering avec Factominer.

              http://www.grappa.univ-lille3.fr/~ppreux/ensg/miashs/fouilleDeDonneesII/tp/segmentation-hierarchique/

              https://datascienceplus.com/k-means-clustering-in-r/

              • Si vous travaillez avec R, regardez le code de ces deux ressources.

              alexandrevitet a écrit:

              Bonjour,

              Existe-t-il une version R des codes en Python fournis dans le cadre du cours?

              Merci,

              Alexandre.



              • Partager sur Facebook
              • Partager sur Twitter
                14 décembre 2018 à 16:36:06

                Bonjour Nicolas et la communauté!

                Tout d'abord merci pour vos cours! Ils sont très clairs et facile à appliquer!

                J'ai plusieurs questions...

                Je débute en Python et j'aurais aimé savoir faire le fameux "zoom" dans la slide "TP: Réalisez une ACP" sur le cercle des corrélations  et la projection des individus dans l'acp. Pourriez-vous m'aider sur ce point?

                Aussi, je m'intéresse à l'ACM (Analyse des correspondances multiples pour les variables qualitatives) et l'AFDM (Analyse Factorielle de Données mixtes pour variables qualitatives et quantitatives). Les pages Wikipédia et les cours théoriques de François Husson sur Youtube sont de bonnes bases à mon sens, mais je n'ai pas trouvé de documentations pratiques françaises "claires" faisant lien avec Python.

                #J'ai installé avec grande difficulté le module mca pour l'ACM mais je suis incapable de l'utiliser au vue de mon niveau de connaissance Python... https://pypi.org/project/mca/#description

                Est-ce que vous auriez 2 exemples de code python "tout fait" pour ces 2 cas respectivement ACM et AFDM avec les types de tableaux en entrée si possible... (par exemple, je crois savoir que pour l'ACM, il faut convertir les variables quantitatives en modalités binaires (1 ou 0) avec l'aide de FactoMiner sous R, c'est peut être la même chose sous Python)? 

                Encore merci pour votre aide!

                Bon week-end à tous!

                Francko

                • Partager sur Facebook
                • Partager sur Twitter
                  15 janvier 2019 à 16:38:29

                  Bonjour,

                  Au chapitre "Téléchargez les jeux de données analysés dans ce cours" le script n'a pas pu être exécuté comme le dashboard d'Open Classrooms ne contient plus de colonne "Score" pour chaque cours depuis un mois ou deux.

                  J'ai le message d'erreur suivant à l'exécution du script : "Error: La colonne 'Score' n'a pas été trouvée dans la page html. Êtes-vous bien sur votre page d'accueil ? ..."

                  Serait il possible de faire une mise à jour du script ? Ou qu'Open Classrooms remette la colonne manquante ?

                  Cordialement

                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 janvier 2019 à 5:58:47

                    Bonjour,

                    J'ai le même soucis que huynguyen2. Problème avec la colonne Score.

                    Une solution est de supprimer cette colonne dans le code javascript (supprimer la ligne 10) mais il manquera certainement une variable dans le dataset.

                    Bruno

                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 février 2019 à 13:34:19

                      Bonjour,

                      Dans le chapitre " Comprenez l'enjeu de l'Analyse en Composantes Principales", je n'ai pas compris comment sont calculés les coefficients des combinaisons linéaires entre les variables et l'axe principal d'inertie.

                      Exemple : F1 = 0.8x + 0.6y

                      Je vous remercie pour votre éclairage.

                      Mathieu

                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 mars 2019 à 11:36:58

                        Bonjour,

                        Même requête que huynguyen2 et umogo concernant la possibilité de télécharger les datas de notre dashnoard personnel.  Je connais pas assez le JS pour pouvoir faire la modif' moi-même.

                        Il est plus intéressant de faire ce cours avec son propre jeu de données car cela nous permet de mieux comprendre et déjà de "pratiquer" un peu et d'avoir des résultats un peu différents de l'exemple.

                        Merci pour votre retour sur ce point.

                        Cordialement

                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 mai 2019 à 17:55:29

                          Bonjour bonjour,

                          Je vous adresse ce message pour vous alerter - comme certain l'ont déjà fait - de l'impossibilité de travailler sur des données de son propre dashboard, la variable Score ayant disparu suite aux MAJ du site.

                          Bien à vous et merci malgré tout pour cette formation de qualité,

                          • Partager sur Facebook
                          • Partager sur Twitter
                            16 mai 2019 à 15:53:14

                            Bonjour,

                            Pour l'activité finale sur la détection de slides, quand j'execute ton code pour charger la video et effectuer la première ACP, au moment de convertir les nombres entiers en nombres décimaux, il me renvoit une MemoryError :

                            Traceback (most recent call last):

                              File "C:\..\activite.py", line 25, in <module>

                                X = X.astype(np.float64) # conversion des nombres entiers en nombres décimaux (float) : necessaire pour le StandardScaler

                            MemoryError

                            Pouvez-vous m'éclairer sur comment résoudre le problème ? (j'ai windows 64bits avec 4Go de RAM installée et il me semble que c'est une version 32bits de Python que j'ai)

                            Merci par avance

                            Sinon excellente formation, encore merci.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 juin 2019 à 15:08:21

                              Bonjour à tous,

                              J'ai corrigé le code Javascript vous permettant de télécharger les cours de votre dashboard

                              Bonne continuation à tous !

                              Nicolas

                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 juin 2019 à 14:28:59

                                Bonjour,

                                En étudiant le cours ACP en parallèle dans un autre manuel, une question me turlupine et que j aimerai avoir un éclaircissement si possible

                                Je résume et cela concerne la détermination des coordonnées d'une variable dans un plan factoriel.

                                2 formules pour cela:

                                La première: les p variables auront pour coordonnées dans l'axe F1X'v1= racine(µ)u1

                                Avec X' transposée de la matrice des données centrés réduites xij ( i = 1..n pour les individus, j=1..p pour variables)

                                v1 vecteur propre (nx1) ( espace variables) associé à la valeur propre µ

                                u1 vecteur propre (px1) (espace individus) associé à la valeur propre µ porteur de l'axe factoriel F1


                                La seconde, et qui me pose problème, repose sur le coefficient de corrélation entre les données initiales (centrées réduites) de la variable j (donc un vecteur nx1) et le vecteur propre v(nx1) : corr (Vj,v1)= coordonnée de la variable j sur l axe factoriel F1,

                                Une démonstration faite en partant du cercle de corrélation  et en en partant de l'idée que tout point de l'hypersphere de rayon 1 peut etre considéré comme une variable et en particulier les points de contact de l'hypersphere et les axes principaux.

                                Pour simplifier, l'auteur se place en dimension 2

                                Ainsi utilisant le fait d'une variable artificielle v1 (et donc si j'ai bien compris le vecteur propre v1) avec moyenne nulle et écart type = 1 d 'un côté

                                et de l'autre et la variable Vj, en faisant le produit scalaire  Vj.v1= corr (Vj,v1)= coordonnées de la variable j sur l'axe F1

                                (j'insere en photo les donn'es de changements de variables en photo)


                                Merci pour l'aide et désolé pour la longueur du texte


                                • Partager sur Facebook
                                • Partager sur Twitter
                                  20 août 2019 à 18:15:34

                                  Bonjour.

                                  J'aimerais avoir votre avis sur "l'utilité", dans l'activité à rendre, de la figure créée par :

                                  clusters_kmeans = km.labels_
                                  centroids_after_kmeans = km.cluster_centers_
                                  print(centroids_after_kmeans.shape) # 300 centres de n_comp dimensions
                                  plt.plot(centroids_after_kmeans[0], centroids_after_kmeans[1])

                                  Je m'interroge sur ce qu'on veut au final représenter avec cette figure.

                                  Le "centroids_after_kmeans[0]" représente les coordonnées en 60 dimensions du centre du premier cluster et le "centroids_after_kmeans[1]" représente les coordonnées du centre du deuxième cluster.

                                  Quel est l'intérêt de représenter les coordonnées du centre du 2ème cluster en fonction de celles du 1er centre ?

                                  Merci pour vos idées si vous en avez.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    2 octobre 2019 à 9:29:26

                                    Bonjour à tous

                                    J'ai débuté le cours.Mais comprendre Python etc c'est encore un défis pour mois.Je continue de me battre les amis

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      12 novembre 2019 à 17:18:56

                                      Bonsoir !

                                      J'aimerais demander est-ce possible d'avoir les commandes pour quelqu'un qui utilise R

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        20 novembre 2019 à 11:58:20

                                        Bonjour, 

                                        Je souhaiterai réutiliser le code python mis en place pour la récupération de la vidéo et la segmentation de celle-ci en images dans l'activité réalisée.

                                        Au cas où quelqu'un (e) réussirait, je suis preneur...

                                        Merci et à bientôt :)

                                        import imageio
                                        import PIL
                                        from PIL import Image
                                        import numpy as np
                                        import pandas as pd
                                        
                                        # Paramètres de compression
                                        width, height = 128,72
                                        img_freq = 90
                                        
                                        # Import de la video
                                        filename = 'ACP.mp4'
                                        images_per_seconds = 30 # La vidéo défile à 30 images par secondes
                                        url = "https://youtu.be/uV5hmpzmWsU"
                                        vid = imageio.get_reader(filename,  'ffmpeg')
                                        sample = np.arange(0, vid.get_length(), img_freq)
                                        
                                        # Extraction des informations
                                        first_frame = vid.get_data(0)
                                        image_height, image_width, colors = first_frame.shape
                                        print(image_height,image_width,vid.get_length(),colors)
                                        print(image_height * image_width * vid.get_length() * colors)
                                        
                                        # Extraction des images
                                        video = np.zeros((0, width*height*3), dtype=np.int8)
                                        for j,i in enumerate(sample):
                                            if j%5 == 0:
                                                print("image ",i, max(sample))
                                            image = vid.get_data(i)
                                        
                                            # Reduction de la taille des images
                                            img = Image.fromarray(image.astype('uint8'), 'RGB')
                                            img = img.resize((width,height), PIL.Image.ANTIALIAS)
                                            image = np.array(img)
                                            
                                            image = image.reshape(height*width*3)
                                            image = image / 4 #Reduction de l'échelle des couleurs (0 à 256 vers du 0 à 64)
                                            image = np.array(image, dtype=np.int8) # Conversion des niveaux de couleurs en int
                                            #display_image(image,height,width,3)
                                            video = np.concatenate([video,[image]])
                                        
                                        print(video.shape)
                                        
                                        # conversion en dataframe
                                        video = pd.DataFrame(video)
                                        
                                        # ajout de la position de l'image, en secondes :
                                        video["position"] = [int(frame/images_per_seconds) for frame in sample]
                                        # ajout de l'url qui fait démarrer la vidéo au bon endroit
                                        video.index = ["{}?t={}s".format(url, p) for p in video["position"]]
                                        # inversion de l'ordre des colonnes dans le dataframe
                                        cols = list(video.columns)
                                        cols.pop(cols.index('position'))
                                        video = video[['position'] + cols]
                                        
                                        # Export CSV
                                        video.to_csv("video.csv")
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          30 décembre 2019 à 22:35:32

                                          FileNotFoundError: [Errno 2] File b'Classeur1.csv' does not exist: b'Classeur1.csv' 

                                          il me dis que mon fichier n existe pas ou est le pblm?


                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            3 janvier 2020 à 11:44:49

                                            Dans la partie du cours : .../4525281-realisez-une-analyse-exploratoire-de-donnees/5254143-recherchez-une-bonne-partition

                                            La formule de l'inertie interclasse me parait bizarre avec le 1/n ..., ce ne serait pas plutôt : 1/k...étant donné qu'ici on considère k points correspondants aux centres de gravité des différents clusters et non pas les n individus du dataset?


                                            -
                                            Edité par KarimEl 3 janvier 2020 à 11:48:14

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              12 mars 2020 à 13:19:52

                                              Bonjour, SVP à quel jeux de donnée devrons nous appliquer l'AFC ET l'AFM, puisque l'ACP est utiliser pour des variables quantitatives et l'ACM pour des variables qualitatives
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                30 avril 2020 à 8:46:44

                                                Bonjour,

                                                Il me semble qu'une erreur s'est glissée dans la représentation du cercle des corrélations.

                                                Il est tracé avec les valeurs de components_ qui sont les vecteurs propres. Mais pour obtenir la corrélation, et donc avoir une représentation graphique correcte, ne faut-il pas multiplier leur valeur par la racine carrée des valeurs propres ?

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  25 mai 2020 à 19:30:39

                                                  Bonjour

                                                  Je suis un débutant en langage python pour l'analyse des données.

                                                  Au niveau du TP : Réalisez une ACP, 

                                                  j'aimerais savoir comment récupérer les outils dans le module "functions.py",

                                                  je l'ai enregistré dans mon dossier mais lorsque je tente d'importer les outils pour le TP, notamment "from functions import *", on me met "invalid syntax,

                                                  Merci de m'orientez svp

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    22 juin 2020 à 12:42:17

                                                    Bonjour.

                                                    Dans le TP : Réalisez une ACP, lorsque j'exécute le code, on me dit que le module Functions n'est pas trouvée alors que j'ai bel et bien executé le code du fichier functions.py au préalable.

                                                    Merci.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      25 juillet 2020 à 17:52:54

                                                      Bonjour,

                                                          Pour la projection des centres de classes sur le premier plan factoriel, comment attribuer une couleur par centre avec une légende permettant d'identifier clairement chaque cluster ?

                                                      Merci.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        1 septembre 2020 à 17:49:52



                                                        KonanAbelYao a écrit:

                                                        Bonjour

                                                        Je suis un débutant en langage python pour l'analyse des données.

                                                        Au niveau du TP : Réalisez une ACP, 

                                                        j'aimerais savoir comment récupérer les outils dans le module "functions.py",

                                                        je l'ai enregistré dans mon dossier mais lorsque je tente d'importer les outils pour le TP, notamment "from functions import *", on me met "invalid syntax,

                                                        Merci de m'orientez svp


                                                        Est-ce que tu es dans le même repertoire que ton projet? Sinon utilise le bon chemin du fichier functions.py.

                                                        -
                                                        Edité par salioudiogo 1 septembre 2020 à 17:51:22

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        Diogo DIALLO 

                                                          12 octobre 2020 à 14:19:01

                                                          Bonjour,

                                                          Quelqu'un pourrait il m'aider svp?

                                                          Je rencontre quelques problèmes parfois à l'exécution du code sur vscode mais tout se passe bien via jupyter notebook.

                                                          Par exemple pour la création du dendogram aucun problème mais message d'erreur sous vscode

                                                          Voici le code du cours :

                                                          import pandas as pd
                                                          from functions import plot_dendrogram
                                                          from scipy.cluster.hierarchy import linkage, fcluster
                                                          from sklearn import preprocessing
                                                          
                                                          # import de l'échantillon et des informations relatives aux cours
                                                          data = pd.read_csv('bag_of_words.csv', index_col = 0)
                                                          courses_info = pd.read_csv('courses_info.csv',index_col = 0)
                                                          
                                                          # Theme du ou des parcours auxquels appartient le cours (data, developpement, marketing, etc.)
                                                          theme = [courses_info.loc[course_id, "theme"] for course_id in data.index]
                                                          
                                                          # préparation des données pour le clustering
                                                          X = data.values
                                                          names = data.index
                                                          
                                                          # Centrage et Réduction
                                                          std_scale = preprocessing.StandardScaler().fit(X)
                                                          X_scaled = std_scale.transform(X)
                                                          
                                                          # Clustering hiérarchique
                                                          Z = linkage(X_scaled, 'ward')
                                                          
                                                          # Affichage du dendrogramme
                                                          plot_dendrogram(Z, names)

                                                          Et voici le message d'erreur :

                                                          ---------------------------------------------------------------------------
                                                          ValueError                                Traceback (most recent call last)
                                                          <ipython-input-10-9ff203f8e1b3> in <module>
                                                               23 
                                                               24 # Affichage du dendrogramme
                                                          ---> 25 plot_dendrogram(Z, names)
                                                          
                                                          d:\Bureau\Data Scientist\VS Code\analyse_exploratoire\functions.py in plot_dendrogram(Z, names)
                                                              111         Z,
                                                              112         labels = names,
                                                          --> 113         orientation = "left",
                                                              114     )
                                                              115     plt.show()
                                                          
                                                          ~\anaconda3\envs\myenv\lib\site-packages\scipy\cluster\hierarchy.py in dendrogram(Z, p, truncate_mode, color_threshold, get_leaves, orientation, labels, count_sort, distance_sort, show_leaf_counts, no_plot, no_labels, leaf_font_size, leaf_rotation, leaf_label_func, show_contracted, link_color_func, ax, above_threshold_color)
                                                             3275                          "'bottom', or 'right'")
                                                             3276 
                                                          -> 3277     if labels and Z.shape[0] + 1 != len(labels):
                                                             3278         raise ValueError("Dimensions of Z and labels must be consistent.")
                                                             3279 
                                                          
                                                          ~\anaconda3\envs\myenv\lib\site-packages\pandas\core\indexes\base.py in __nonzero__(self)
                                                             2148     def __nonzero__(self):
                                                             2149         raise ValueError(
                                                          -> 2150             f"The truth value of a {type(self).__name__} is ambiguous. "
                                                             2151             "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
                                                             2152         )
                                                          
                                                          ValueError: The truth value of a Index is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

                                                          Merci d'avance!!

                                                          Hadrien

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            16 novembre 2020 à 1:54:53

                                                            Bonjour,

                                                            Pour le TP de l'ACP, j'ai enregistrer le fichier functions.py au même endroit que mon notebook Jupyter, mais avec 'from functions import *, ça m'affiche :

                                                            File "functions.py", line 8 for d1, d2 in axis_ranks: # On affiche les 3 premiers plans factoriels, donc les 6 premières composantes ^ SyntaxError: Non-ASCII character '\xc3' in file functions.py on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

                                                            Que faire ? Merci.

                                                            ###############

                                                            Bon au final, je n'ai plus ce pb, j'ai refait un copier-coller, mais je ne sais toujours pas quel était le pb initial.

                                                            Par contre toutes les fonctions ne marchent pas : par exemple celle pour tracer le cercle ne marche pas, alors que celui pour l'éboulis marche.

                                                            Avez-vous eu des pb aussi ?

                                                            -
                                                            Edité par Pierre12345678910%% 16 novembre 2020 à 19:16:02

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              20 novembre 2020 à 17:32:28

                                                              Pierre j'ai trouvé la solution 

                                                              https://raw.githubusercontent.com/stenier-oc/realisez-une-analyse-de-donnees-exploratoire/master/functions.py

                                                              télécharge ce fichier et écrase la version de functions.py dans ton Jupyter

                                                              -
                                                              Edité par BillyThomont 20 novembre 2020 à 17:45:30

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              [COURS] Analyse exploratoire de données

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              • Editeur
                                                              • Markdown