Partage
  • Partager sur Facebook
  • Partager sur Twitter

[COURS] Analyse exploratoire de données

ACP et clustering

    Team OC 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 à hello@openclassrooms.com

    Bon courage et à bientôt !

    -
    Edité par Nicolas Rangeon 23 avril 2019 à 18:30:49

    • 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
          Team OC 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
              Team OC 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
                              Team OC 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

                                        [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