Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Cours] Initiez-vous au machine learning

Découvrez les bases du machine learning

    Team OC 14 décembre 2016 à 3:42:08

    Bienvenue dans ce cours d'initiation au machine learning !

    L'objectif de ce cours est de découvrir un peu plus en détails cette nouvelle science, devenu un outil indispensable pour tout data scientist.

    Je suis là pour répondre à toutes vos questions, n'hésitez surtout pas 🙂

    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

    A bientôt,

    Yannis 

    • Partager sur Facebook
    • Partager sur Twitter
      25 décembre 2016 à 12:20:23

      J'ai vu sur ce cours, qu'il fallait des prérequis ( Algèbre linéaire, stat, ...) est ce que des cours seront proposés pour ces domaines là?
      • Partager sur Facebook
      • Partager sur Twitter
        5 janvier 2017 à 18:22:39

        Bonjour,

        J'ai suivi avec intérêt cette introdution au Machine Learning.

        En revanche pour l'exercice je déplore que nous n'ayons pas accès au code du présenté lors de la vidéo du TP de régression linéaire.

        En effet celui qui est présenté sur la partie écrite est incomplet et parfois inexact.

        Y a t il moyen d'avoir quelques indices ? Le forum est bien tristounet, aucun message, peut être parce que le MOOC est récent ?

        Une habituée des MOOC :obtenu pas mal de certifications chez FUN (statistique, python, économie collaborative, numérique, fondamentaux du big data), chez coursera (innovation), EDX ( R , data science), Future Learn (Big data).

        De plus, sur Openclassrooms on ne sait pas le niveau à obtenir quand on démarre un MOOC : est ce toujours 70% ? Les quizz uniquement e devoir corrigé par les pairs facultatifs ? Ce n'est franchement pas bien indiqué.

        Sinon, ravie d'être inscrite chez vous !  Plein de cours qui m'intérressent et j'attends avec impatience la suite du Machine Learning :-)

        Bien à vous,

        Thérèse

        • Partager sur Facebook
        • Partager sur Twitter
          Team OC 9 janvier 2017 à 15:18:44

          Hello @Xav03, des cours sont en production pour ces prérequis, mais ils ne seront malheureusement pas tout de suite disponible !

          Bonjour @ThereseAgnetti,

          N'hésitez pas à me dire à quel endroit vous pensez que le code est incorrect afin que je le corrige.
          Quand au code de la vidéo, vous le trouverez ci-dessous :

          import numpy as np
          import pandas as pd
          import matplotlib.pyplot as plt
          
          # Import des donnees
          house_data_raw = pd.read_csv('house.csv')
          house_data = house_data_raw[house_data_raw['loyer'] < 7000]
          
          # Affichage des observations
          plt.plot(house_data['surface'], house_data['loyer'], 'ro', markersize=4)
          plt.show()
          
          # Creation des matrices de travail
          X = np.matrix([np.ones(house_data.shape[0]), house_data['surface']]).T
          y = np.matrix(house_data['loyer']).T
          
          # Calcul du coefficient de regression
          theta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
          theta.item(0) + 50 * theta.item(1)
          
          # Affichage de la droite de regression
          plt.plot(house_data['surface'], house_data['loyer'], 'ro', markersize=4)
          plt.plot([0, 250], [theta.item(0), theta.item(0) + 250 * theta.item(1)])
          plt.show()

          -
          Edité par Yannnis 9 janvier 2017 à 16:11:18

          • Partager sur Facebook
          • Partager sur Twitter
            14 janvier 2017 à 17:32:10

            Bonjour,

            J'arrive à la vidéo du premier TP. J'ai installé Python 2.7 sur mon pc sous Windows 10. Par contre, voilà bien 30 mn que je tente d'installer le reste. Pourriez-vous me donner la marche à suivre?

            Ecrire

            pip install "ipython[notebook]" 

            dans la ligne de commande de Python ne fonctionne pas pour installer IPython par exemple.

            Je ne connais pas bien Python, c'est peut-être pour ça...

            Merci de votre aide.

            Frédérique

            • Partager sur Facebook
            • Partager sur Twitter
              29 janvier 2017 à 17:28:32

              Bonjour,

              J'ai entendu parler du machine learning et j'étais curieux et intéressé d'en savoir plus, data science en général je ne sais pas (car je ne sais pas ce que c'est exactement en réalité), mais des trucs comme data-mining, l'IA et bases de données font partie (sont censés faire partie du moins) de ma spécialité, mais c'est des termes encore flous pour moi, BI, data science, big data, data-mining, analyse de données, bases de données etc je ne suis pas sur de savoir quelle différence entre eux ni la définition de chacun des termes :(, donc en fait je ne sais même pas si cette discipline (le machine learning) me concerne ou pas, je serais bien content que quelqu'un puisse m'aider à me retrouver dans tout ce bazar et par la même occasion là au moins je saurais si ca me concerne ou pas :p ...

              • Partager sur Facebook
              • Partager sur Twitter
                2 février 2017 à 13:21:59

                Pour revenir aux erreurs dont parle @ThereseAgnetti , j'en ai vu une (en même temps, on ne peut pas la rater...) Sur le premier TP, le code ne filtre pas les données "aberrantes" comme dans celui que vous copiez ici. Il manque le filtre "loyer < 7000", et du coup on obtient un theta(0) négatif... Pas choquant quand on regarde la superposition du nuage de points et de la régression, avec les données complètes c'est cohérent, mais dans le TP le théta(0) est positif, ce qui fait se demander à quel moment on a pu rater.

                Et, pour retomber sur les valeurs numériques de l'énoncé (loyer = 30 x surface + 294.3), il faut filtrer à "loyer < 8000". Pas très cohérent tout ça :p

                Sinon, dans le calcul du X (même TP), il y a un ".as_matrix()" en plus dans l'énoncé du TP par rapport au code que vous avez collé ici (mais il ne change rien au résultat, il y a soit conversion implicite du tableau, soit duck typing sous le capot, je n'ai pas vérifié le typage).

                Dernier point : si le dernier "snippet" d'exemple de sci-kit pouvait marcher, ça serait mieux, aussi :

                from sklearn import linear_model
                regr = linear_model.LinearRegression()
                regr.fit(X, y)
                regr.predict([[50, 0]])

                (avec le "X" et "y" définis plus haut)

                -
                Edité par AlanC 2 février 2017 à 13:43:59

                • Partager sur Facebook
                • Partager sur Twitter
                  6 février 2017 à 18:05:36

                  Bonjour,

                  Je n'arrive pas à implémenter la régression à partir du package scikit learn après la commande regr.fit(surface, loyer),

                  J'obtiens le message suivant :  DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.

                  merci

                  -
                  Edité par SabrineBendimerad 6 février 2017 à 21:18:13

                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 février 2017 à 14:41:22

                    Installer iPython / Jupyter notebook

                    Salut @FrederiqueAlles ,

                    Pour installer iPython (désormais nommé Jupyter) et tous les packages nécessaires (scikit-learn, pandas, ....) dans leur plus récente version, la solution simple mais très complète est d'installer Anaconda. Notez que cela installe la dernière version de Python 3.x , ce qui est recommandé pour les nouveaux utilisateurs.

                    Si tu es expérimenté et veut tout faire toi-même : pip install --upgrade pip pip install jupyter

                    Ce cours est-il pour moi ?

                    Salut @OhlolmdrXptdr ,

                    pour répondre à la question Ce cours est-il pour moi , je dirais qu'il faut que tu saches ce que tu veux pouvoir faire. Sinon tu peux regarder des exemples pour de ML pour déterminer les possibilités.

                    Pour cela, tu peux simplement regarder les 2 premières sections de la partie 1 (Découvrez les possibilités du Machine Learning).

                    Mais il faut savoir qu'aujourd'hui, toutes les disciplines que tu mentionnes utilisent des données, mais pas avec les mêmes outils ou méthodologies. Dans ce sens, apprendre une nouvelle façon de faire ne peut être que positive pour toi.

                    S'y retrouver dans toutes ces nouvelles disciplines

                    Concernant tous les termes que tu as mentionnés, je dirais que le meilleur moyen de s'y retrouver est de lire wikipedia pour chacun des termes, ou de chercher sur un moteur de recherche "différence entre ... et ...". Ca peut sembler faire beaucoup au début, mais c'est efficace.

                    Si tu cherches des diagrammes, tu trouveras que comme ici sur quora les disciplines se mélangent (d'où la confusion) et que des différences sont parfois seulement liées à des méthodologies / outils / habitudes / approches différentes.

                    Erreurs et problèmes

                    Bonjour @SabrineBendimerad,

                    L'erreur signifie que le format de données attendu par la fonction a changé: la fonction attend maintenant des matrices (au lieu de sortes de listes).

                    Regarde le code posté par @CarriouAlan . Tu peux simplement remplaçer : surface = X ; loyer = y;. Ou bien, en attendant que tu maîtrises un peu plus les structures de données des librairies, tu peux utiliser plutôt regr.fit( surface.reshape(-1,1), loyer.reshape(-1,1) ).

                    Tu peux voir la différence en faisant

                    print( surface ) # qui donne apparemment une liste indexée
                    print( surface.reshape(-1,1) ) # qui donne une matrice avec 1 colonne
                    

                    -
                    Edité par Jfreex 13 février 2017 à 23:09:17

                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 février 2017 à 20:48:51

                      Bonjour @YannisChaouche

                      Pour l'activité 2.5, il nous est demandé "de reprendre le code du TP de régression linéaire et de tester plusieurs manières d'améliorer la modélisation".

                      Ma question est : devons-nous reprendre le TP et les hypothèses de travail émises durant celui-ci sans se poser de questions ? En particulier, devons-nous par exemple filtrer les données comme elles ont été filtrées dans la partie 2.2 du cours ou bien devons-nous questionner ce choix ?

                      Ou bien encore est-ce que le choix de filtrer ou non n'importe pas, l'important étant de pouvoir justifier nos choix ?

                      [Si quelqu'un qui a eu beaucoup de points pouvait aussi m'aiguiller, ce serait sympa car pour moi la donnée n'est pas très claire là-dessus.]

                      Meilleures salutations

                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 février 2017 à 9:35:52

                        Bonjour Jfreex,

                        Je suis également au niveau de l'activité, pour ma part j'ai regardé à quoi ressemblait la baseline sur un graphique. De là, on peut prendre certaines décisions. Le tp t'a déjà montré lesquelles...

                        Bon courage 

                        Philippe 

                        • Partager sur Facebook
                        • Partager sur Twitter
                        La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                          16 février 2017 à 16:14:04

                          Bonjour,

                          Le TP "Entraînez le modèle des k plus proches voisins (k-NN)" passe par l'utilisation de la fonction

                          np.random.randint(70000, size=5000)

                          Or cette fonction ne fournit pas d'unicité sur les entiers tirés (cf. par exemple ce post : http://stackoverflow.com/questions/8505651/non-repetitive-random-number-in-numpy). N'est-ce pas problématique ? En tout cas ça le devient si on utilise cette méthode pour diviser le jeu de données du TP en données d'entrainement et de test.

                          Merci,

                          R.

                          -
                          Edité par Rico42 16 février 2017 à 16:18:11

                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 mars 2017 à 20:53:34

                            Bonjour Rico42,

                            Tu soulignes un bon point! Et heureusement, il existe d'autres méthodes pour sélectionner des jeux de données (qu'il s'agisse de prendre un échantillon, de créer un jeu d'entraînement ou un jeu de données pour le test).
                            Le cours mentionne plusieurs moyens.

                            Bonne continuation

                            J.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 mars 2017 à 13:37:26

                              Pour le TP k-nn, dans les exemples au milieu du texte, il manque l'import de la fonction train_test_split. Ok ,c'est juste un retour sur la vidéo ou un google pour la retrouver, mais bon c'est dommage. Dans la même veine, les variable qui changent de nom comme sur la ligne "errors.append(100*(1 - knn.fit(X_train, y_train).score(X_test, y_test)))", c'est dommage aussi. Bref, c'est fait exprès que le copier/coller ne marche pas (i.e. pour qu'on réfléchisse un peu plus à ce qu'on fait) ou c'est à corriger ?

                              Pour pinailler, sklearn.cross_validation est obsolète depuis la 0.20 (j'ai eu l'avertissement à l'import), il faudra penser à mettre à jour l'exemple avant qu'il soit vraiment supprimé :)

                              Pour faire des commentaires sur le fond, un truc qui manque, c'est faire remarquer à l'étudiant que le résultat peut varier très fortement en fonction du jeu de données. J'ai extrait une seule fois les 5000 points sur les 70 000, et après en jouant 10 fois d'affilée un 3-nn sur 80% du jeu de données, mais avec une autre sélection pour les 80%, l'erreur varie de 5,8% à 9,3%...

                              errors = []
                              for i in range(10):
                                  print i
                                  xtrain, xtest, ytrain, ytest = train_test_split(data, target, train_size=0.8)
                                  knn = neighbors.KNeighborsClassifier(n_neighbors=3)
                                  knn.fit(xtrain, ytrain)
                                  errors.append(1 - knn.score(xtest, ytest))
                               
                              plot.plot(range(10), errors, 'o-')
                              plot.show()

                              Même si ça peut paraître évident, un TP c'est aussi l'occasion de faire comprendre ce genre de comportements - et donc que déterminer un "modèle optimal" peut prendre du temps :)

                              De même, en rejouant plusieurs fois la partie "extraction de 5000 points + séparation en 80 / 20", le "k" optimal n'est plus le même : sur une exécution, c'est le 3-nn qui était optimal à 7,6% d'erreur, le run suivant c'est le 8-nn qui est beaucoup plus efficace (7,1% d'erreur). Bref, il me semble bizarre qu'à ce stade du cours (je n'ai pas encore regardé la suite) on n'ait pas de remarque sur le fait qu'une sélection (pseudo) aléatoire puisse mener à des résultats aussi instables. A moins que la suite du cours en parle, je verrai bien :)

                              (pour le randint, bien vu Rico42 :p)

                              • Partager sur Facebook
                              • Partager sur Twitter
                                16 mars 2017 à 13:53:19

                                Petite remarque sur la formulation du Quizz 2, question 2 : "Garder une représentation complète de tout le phénomène (ne pas en avoir oublié une partie)." C'est sûrement ma faute, mais même en relisant plusieurs fois je comprenais la phrase comme "garder 100% des données" au lieu de "S'assurer que l'échantillon est représentatif/non biaisé par rapport au phénomène". Ce n'est pas dramatique, mais je me demandais si j'étais le seul à avoir mal compris ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  16 mars 2017 à 23:54:25

                                  bonjour!

                                  Je suis super heureux d'avoir un cours comme ca, meme si parfois je trouve que les tournures de phrases sont un peu trop alambiquées et demandes du coup de la relire plusieurs fois...

                                  Par contre je voudrais râler un peu (oui je suis francais, c'est notre sport nationnal...:)) 

                                  En effet, dans le premier quizz, il est demandé "Quelles est l'étape de travail dans lequel le data scientist passe en général le plus de temps ?"

                                  (remarquez au passage la belle faute de grammaire... :D)

                                  Et la moi je suis un bon élève. Dans la toute premiere video du cours, entre 2.55 et 3.20, on nous explique que la recuperation des données est la ou il va passer le plus de temps. Alors je coche ca dans le qizz. Et paf! mauvaise reponse!

                                  Alors je dis ca, mais en meme temps que j'ecris ce message (et maintenant que j'ai la bonne reponse via la correction)m je comprend que le texte apres la coupure dans ce creneau temporel que j'ai indiqué, celui on le monsieur dit "c'est la ou on va passer le plus de temps" ne se refere pas à ce dont il parlait juste avant, mais a tout le "chapitre video" qui se trouvait avant la coupure.

                                  Bref, c'est tompeur. Et décevant, car je perds des points alors que c'est juste que le texte était trompeur. Quand je vous parlais de tournures de phrases alambiquées...!


                                  EDIT: bon je voudrais pas paraitre negatif (car je suis super heureux d'avoir ce cours sur OC), mais je rajoute un point negatif: C'est tres orienté Mac (voir uniquement mac). La pluspart des softwares utiles n'ont pas de version windows donc c'est un vraiment deconcertant pour un "bleu". Donc si vous pouviez rajouter des liens vers les software equivalents pour windows (s'ils en existe...) ce serqit top :)

                                  -
                                  Edité par Skem 23 mars 2017 à 22:34:15

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    4 avril 2017 à 22:01:19

                                    Skem, tu peux utiliser Anaconda, et son interface Jupyter (accessible par l'invite de commande en tapant jupyter notebook). C'est un excellent outil.

                                    Pour le TP Entraînez le modèle des k plus proches voisins (k-NN), les serveurs de mldata.org sont hors services depuis près de 2 semaines, et donc impossible d'effectuer tel quel le code proposé. Il faut pour cela télécharger la source mnist-original.mat, la placer dans un répertoire \mldata\, et écrire mnist = fetch_mldata('MNIST original', data_home=location), où location est l'adresse du répertoire où est placé le répertoire mldata.
                                    Ca en aidera peut-être certains, car j'ai mis pas mal de temps à trouver la solution.

                                    A la fin de ce TP, on trouve un code pour récupérer les données mal classées, mais ça ne fonctionne pas chez moi. Voici mon code :

                                    (...)
                                    predicted = knn.predict(xtest)
                                    images = xtest.reshape((-1, 28, 28))
                                    (...)
                                    
                                    # on récupère les données mal prédites
                                    misclass_images = images[ytest != predicted]
                                    misclass_labels = predicted[ytest != predicted]
                                    
                                    # on sélectionne un échantillon de ces images
                                    select = np.random.randint(misclass_images.shape[0], size=12)
                                    
                                    # on affiche les images et les prédictions (erronées) associées à ces images
                                    for index, value in enumerate(select):
                                        plt.subplot(3,4,index+1)
                                        plt.axis('off')
                                        plt.imshow(misclass_images[value],cmap=plt.cm.gray_r,interpolation="nearest")
                                        plt.title('Predicted: %i\nReal: %i' % (misclass_labels[value], ytest[value]))
                                    
                                    plt.show()

                                    J'ai ajouté à la fin la comparaison entre la valeur mal prédite (misclass_labels[value]) et la valeur réelle (ytest[value]), pour y voir plus que la seule comparaison à l'image.
                                    Problème : la valeur réelle est parfois identique à la valeur mal prédite (ce qui ne devrait pas arriver), et est parfois clairement différente de l'image. Ca fonctionne pourtant bien avec les valeurs correctement prédites apparemment.

                                    A quoi est-ce dû ?

                                    Une autre question me vient en tête : avec l'algorithme k-NN, on a vu comment déterminer le meilleur hyperparamètre k pour un échantillon. Mais je n'ai rien vu concernant l'apprentissage (on fait bien du machine learning ici aussi ?).
                                    Existe-t-il un moyen d'améliorer les prédictions futures ? Jusqu'à quel point pouvons nous aller pour considérer que notre modèle est suffisamment robuste ?

                                    -
                                    Edité par FrédérikVarlet 4 avril 2017 à 22:22:27

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      4 avril 2017 à 22:56:06

                                      Merci Frederik pour ta reponse! En fait j'avais aussi trouvé anaconda/jupyter, mais tout comme toi je me suis aussi retrouvé bloqué par les serveurs de de mldata qui etaient down

                                      Merci pour ce petit tuto, bien pratique!

                                      -
                                      Edité par Skem 4 avril 2017 à 22:56:19

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        5 avril 2017 à 11:42:10

                                        Je suis sur l'exercice Allez plus loin dans la prédiction de loyer. Je cherche à faire un plot par arrondissement, mais je rencontre un problème d'indiçage.

                                        J'ai fait pour l'instant un code assez similaire à celui du TP initial (par la suite, je compte passer par des list comprehensions dans les plots) :

                                        Location = r'\mon_dossier\house_data.csv'
                                        house_data_raw = pd.read_csv(Location)
                                        house_data = house_data_raw[house_data_raw['price'] < 12000]  # On limite les données aux loyers modérés (trop forte dispersion au-delà)
                                        
                                        for i in range(0, house_data['price'].shape[0] - 1):
                                            print(house_data['price'][i])

                                        La boucle m'affiche une erreur 47. En regardant de plus près, je remarque que l'indiçage pour house_data['price'] doit être le même que celui de house_data_raw['price'] (house_data['price'][47] m'affiche une erreur car house_data_raw['price'][47] > 12000).

                                        Solution trouvée pour l'instant (en passant par house_data_raw plutôt que par house_data) :

                                        plt.plot([house_data_raw['surface'][i] for i in range(0, house_data_raw['price'].shape[0] - 1) if ((house_data_raw['price'][i] < 12000) and (house_data_raw['arrondissement'][i] == 4))], [house_data_raw['price'][i] for i in range(0, house_data_raw['price'].shape[0] - 1) if ((house_data_raw['price'][i] < 12000) and (house_data_raw['arrondissement'][i] == 4))], 'o', markersize=2, label="Arrondissement #4")

                                        mais c'est vraiment difficilement lisible.

                                        S'il y a des connaisseurs de Python 3, j'aimerai bien connaître une façon élégante de régler ce problème d'indiçage.

                                        Merci d'avance

                                        -
                                        Edité par FrédérikVarlet 5 avril 2017 à 12:27:33

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          14 mai 2017 à 0:41:34

                                          Bonjour, je suis bloqué à l'exercice : " Allez plus loin dans la prédiction de loyer".

                                          Je trouve le cours un peu limité pour se debrouiller, pour un novice en python (comme moi) à part copier coller et modifier un peu le code de l'exemple du cours on comprend pas grand chose.

                                          Quelqu'un aurait un site/lien pour comprendre les étapes à suivre notamment pour les deux propositions d'amélioration ?

                                          Je fait le cours "Apprenez à programmer en Python" en parallèle pour essayer d'avancer.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            14 mai 2017 à 10:08:37

                                            Bonjour MartinFeldmann

                                            J'étais dans le même cas que toi, tu peux par exemple, faire des modèles en fonction des arrondissements et voir ceux qui sont le plus précis avec les données d'entraînement. Tu utilises ensuite les deux plus précis avec les données de test et tu détermines le meilleur.

                                            Maintenant si tu as d'autres idées, lance-toi!

                                            En espérant que ça t'aide je te souhaite bon courage pour la suite !

                                            A+

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                              17 mai 2017 à 23:26:51

                                              Salut Philippe2463 et merci d'avoir répondu ! :)

                                              Je n'ai pas étais assez claire, en fait je ne sais pas comment faire de modèle, je comprends l'étape de séparation entre le training et le testing set et la partie théorique mais je ne comprends pas comment on fait dans python pour exploiter mon dataset sous différent angle pour faire plusieurs modèle. :/

                                              Sinon, pour l'instant j'ai avancé jusqu'à 23% du cours "Apprenez à programmer en Python".

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                18 mai 2017 à 9:37:19

                                                Ok, bonne initiative de suivre ce cours Python, tu as également Démarrez votre projet avec Python qui peut t'apporter des notions supplémentaires.  De même en consultant le parcours Data-scientist tu verras tous les cours qui pourraient t'être utiles.

                                                A+

                                                -
                                                Edité par Philippe2463 18 mai 2017 à 10:14:44

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                                  23 mai 2017 à 10:32:53

                                                  Bonjour à tous :)


                                                  Compte tenue des cours et des parcours dans les domaines de la Data Science. Je me disais qu'il pourrait y avoir une section dédiée sur le forum.
                                                  (J'ai fini par trouver ce petit coin dédié au machine learning.)

                                                  J'ai également deux questions concernant le cours d'initiation au machine learning.

                                                  • Lors de l'exercice de prédiction du loyer, il me semble qu'on est bien dans un cas d'apprentissage supervisé de régression. Est il correct d'utiliser la méthode du KNN qui est plutot une méthode de classification ?
                                                  • Si j'utilise un modèle de régression, comment choisir la meilleure métrique pour évaluer les performances de mon modèle ?

                                                  Merci pour vos précisions,
                                                  Wils
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    23 mai 2017 à 16:05:02

                                                    Bonjour Wils,

                                                    Pour ta 1ère question, la méthode kNN est appropriée pour classifier, et non pour déterminer une mesure, comme tu l'as indiqué.
                                                    Si tu le souhaites, tu peux trouver l'arrondissement où on a le plus de chance de trouver un appartement pour un certain loyer et une certaine superficie, par contre on s'éloigne de ce qui est demandé selon moi.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      24 mai 2017 à 13:50:49

                                                      Wills et Frédérik, le k-NN est aussi utilisable pour de la régression, et est dispo dans scikit_learn : http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsRegressor.html

                                                      L'idée de k-NN est de trouver les k plus proches voisins, après, la valeur de la dimension qu'on veut calculer pour le "point" en entrée (par ex. le prix pour le couple surface/arrondissement) peut être une moyenne des valeurs de la dimension pour les k voisins le plus proches (pourquoi pas en pondérant par la distance, ou autre méthode de calcul souhaitée...). Et la notion de "plus proche" est évidemment à adapter au cas d'usage : on peut considérer l'arrondissement comme une classification, ou pourquoi pas comme une distance (si on retrouve la géolocalisation "centrale" de l'arrondissement...). Il n'est pas évident qu'une "distance" de 2 m2 ait la même importance que de passer du 16e arrondissement au 18e par exemple...

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        25 mai 2017 à 0:30:03

                                                        Ah, il y a donc un KNN version Regression.

                                                        Merci pour vos précisions, c'est plus claire.

                                                        Wils

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          25 mai 2017 à 0:49:28

                                                          Bonjour, apparement le module "train_test_split" de sklearn serait obsolète et il faudrait lui préféré "model_selection", connaissez-vous la différence à l'utilisation ? (Une future correction du cours serait aussi à prévoir j'imagine).


                                                          Bonne soirée/nuit/journée

                                                          Dorian.
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Technicien Support Client - Orange Application for Business
                                                            Team OC 5 juin 2017 à 17:55:15

                                                            Bonjour à tous,

                                                            Merci pour vos retours sur le cours de Machine Learning. Nous les suivons avec intérêt et nous appliquons certaines modifications quand elles nous semblent pertinentes !

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              25 juin 2017 à 16:24:48

                                                              bonjour à tous,

                                                              je suis en train de faire l'activité allez plus loin, et je souhaiterais connaitre la manière de réaliser des régression linéaires multiples avec python.

                                                              Merci d'avance :)

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              [Cours] Initiez-vous au machine learning

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