Bonjour Guillaume, tout d'abord un grand merci pour cette vidéo très instructive ! ça fait plaisir d'avoir des explications aussi claires sur le machine learning ;) J'ai fait l'exercice du titanic, j'obtiens comme hyperparamètres metric: manhattan, n_neighbors: 17 et weights: distance. Comme meilleur score, j'obtiens 0.783, score que l'on peut améliorer avec plus de données selon les courbes d'apprentissage.
Tres intéressant ! J'encourage tout le monde a lire le commentaire d'Alexis et a mettre un pouce bleu dessus ! Si d'autres personnes ont des réponses, mettez les ci-dessous, c'est important ! Moi aussi je vais faire l'exercice et poster mes réponses ici :) Merci Alexis a bientôt ! :D
@@MachineLearnia Cette vidéo est une bonne initiative, cependant, il ne permet de s'entrainer sur d'autres dataset,s ses algorithmes sont calqués sur son problème, les fleurs d'iris, c'est quelque chose que l'on trouve à la première recherche sur le net. Comment faire pour appliquer un modèle lorsque ce n'est pas un dataset intégré à la librairie?
@@MachineLearnia Bonjour Guillaume, je trouve aussi exactement le même résultat qu'Alexis après avoir lancé l'optimisation suivante (pas très originale au niveau métriques pour GridSearchCV et cv pour learning_curve). Le tracé de train_score et val_score indique aussi qu'il faudrait plus de données mais j'ai un gros doute là car la courbe "train" décroit dès le premier train_size de 91 !!!!!! Est-ce possible ? Est-ce que tu as couvert le corrigé dans une vidéo (j'en ai regardé plusieurs dont 22). param_grid = {'n_neighbors': np.arange(1, 20), 'metric': ['euclidean', 'manhattan', 'minkowski'], 'weights': ['uniform', 'distance']} grid = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5) N, train_score, val_score = learning_curve(model, X_train, y_train, train_sizes=np.linspace(0.2, 1.0, 5), cv=5)
Bonjour à tous, oui superbe vidéo comme toujours ! J'ai trouvé un best_score de 0.777 avec best_params = {'metric': 'manhattan', 'n_neighbors': 11} et un model.score(X_test, y_test) = 0.713 De belles courbes croissantes globalement en train et validation qui demandent d'autres données pour progresser. Pas vu non plus de corrections de Guillaume mais ça me semble une bonne 1ere approche vu les autres résultats en commentaires Bien à tous !
Bonjour Guillaume, je fais une petite pause durant ces cours que je dévore depuis 10 jours. Je ne connaissais ni l'I.A. ni Python. J'arrive encore à m'émerveiller à + de 60 ans ! Je t'envoie un immense merci pour tout ce que tu fais. Et puis il y a un nouveau truc hyper facilitateur quand je bute encore sur la syntaxe : C'est ChatGPT. Il répond à toutes mes questions. Je l'harcèle tellement que je n'ose même plus lui poser de questions , de peur de le déranger 🤪
En attendant il ne faut pas 20 minutes pour assimiler les concepts nouveaux. Il n'est pas rare que chaque vidéo me prenne de 1 à 2 heures : entrainement, tests, etc. En tout cas merci.
Merci infiniment pour ces excellentes leçons gratuites qui me sauvent littéralement la vie. J'ai soit disant des cours de cette matière à l'Université... Grâce à vous, je comprends tout et je m'entraîne efficacement =) Merci infiniment. Votre travail est d'utilité publique !
Finalement j'ai trouvé mon mentor que j'ai toujours rêver! Tu me fascine, explication claire , simple et concis!!! You are the best One!!!Mon maître j'attends le cour de C++ et java Niveau expert!
Merci beaucoup ! :) Je ne sais pas si je vais faire du Java et du C++ en niveau expert (on ne peut pas être bon partout !) mais la chaîne va tout de même proposer du contenu tourné Arduino, C, microprocesseur dans le futur ! :)
Expert en Java JEE et full stack (pour reprendre l'expression très à la mode), j'attends Arduino avec impatience. Ce n'est pas que les tutoriels soient absents sur le net mais j'attends du concis et du professionnel, ayant une expérience de la programmation bas niveau. A bientôt.
Super vidéo comme d'habitude. Pour ce qui est de l'exercice : Meilleur paramétrage : {'metric': 'manhattan', 'n_neighbors': 17, 'weights': 'distance'} Meilleur score : 0.7828 L'apprentissage pourrait être amélioré, mais l'expérience n'est pas reproductible.
en fait on peut faire un peu mieux avec : Meilleur paramétrage : {'metric': 'canberra', 'n_neighbors': 8, 'weights': 'uniform'} Meilleur score : 0.8161120840630472...
C'est très intéressant ! Un autre abonné (Alexis) a trouvé les mêmes résultats {'metric': 'manhattan', 'n_neighbors': 17, 'weights': 'distance'} avec le même score. C'est intéressant de comparer cela avec une distance Canberra. Je trouve ça curieux que Canberra (qui est semblable à Manhattan mais avec des coefficients) ait un bon score avec des weights "uniform" Concernant les courbes d'apprentissage, on pourrai croire que plus de données aideraient a améliorer l'algorithme, mais en se rappelant que les données ont une grande variances (des passagers de même classes, même age, même genre ont parfois survécus, parfois non) alors on peut se rend compte que récolter plus de données ne sera pas forcément utile (meme si les courbes le laissent a penser !) (bravo pour avoir complété l'exercice !)
Génial, je suis tes vidéos depuis la première de la série spéciale machine learning et c'est épatant. J'éprouve tellement de satisfaction à suivre tes vidéos, merci. C'est limpide et vraiment entraînant !
Merci beaucoup Guillaume, vous êtes je pense le meilleur prof que j'ai pu croisé de toute mon existence, excellente présentation, très claires on a même pas besoin de revenir en arrière tout rentre très facilement... encore merci, bises
Bonjour, Guillaume. L'explication sur les données de validation m'a fait sourire. Elle me fait penser aux projets informatiques en entreprise. De mon expérience c'est exactement la même chose ! Si les développeurs travaillent avec en vue les données des tests d'intégration (= test set) alors le code n'est pas vraiment bon puisque qu'ils développent alors des comportements trop en accord avec ces mêmes données et des bugs sont à prévoir en production. C'est là qu'intervient les tests en validation (souvent faits par le client). Ces tests (validation set) vont alors éprouvés réellement le code afin de savoir si il n'y a pas de bug. Je trouve l'analogie vraiment intéressante.
Mon modèle de prédiction neuronale pense déjà trop souvent avoir bien prédis la qualité de ta vidéo à venir mais se heurte si souvent à tes bon modèles de vidéos optimiser, Tout ce qui ce conçois bien S'énonce très clairement force à toi Guillaume bon boulot
Merci beaucoup pour ton commentaire :) Dans le cas ou tu fais l'exercice, dis nous dans les commentaires les performances que tu obtiens, ca serait intéressant ;)
Très dense cette vidéo ! J'ai appris beaucoup de choses merci ! Résultats : metric = manhattan, neighbors ~10-25, weights = distance; need more data; score sur le test set ~ 75-85%
ah wep vraiment je suis toujours heureux d'apprendre avec tes tuto je regarde plusieurs fois ces vidéos en pratiquant vraiment c'est fascinant j'ai l'impression que tu demystifies la data science
Super ! Merci ! Tu démontres très bien en quoi Scikit Learn est un outil très puissant ! Je n'imaginais pas qu'on pouvais optimiser à ce point la recherche d’hyper-paramètre.
Bonjour Guillaume, un grand merci pour cette vidéo très instructive ! ça fait plaisir d'avoir des explications aussi claires sur le machine learning ;) J'ai fait l'exercice du titanic, j'obtiens comme hyperparamètres metric: manhattan, n_neighbors: 7. Comme meilleur score, j'obtiens 0.79, score que l'on peut améliorer avec plus de données selon les courbes d'apprentissage.
C'est vraiment impressionnant : J'essaye d'apprendre le ML, en parallèle de tes vidéos, sur des bouquins.... et tu clarifies tellement de chose que je pensais avoir compris dans les livres! Merci à toi. Cette capacité à rendre explicites et intuitives des notions complexes est vraiment rare sur TH-cam je trouve, et ta chaîne la possède c'est une vrai force! :D Du coup ça me donne une idée pour une prochaine série de vidéo pour ta chaîne: Les mathématiques derrières le ML. Je pense que ça rendrait service à beaucoup d'abonnés! (dont moi ;) )
Merci beaucoup Julien. J'ai prévu de faire une série spécial Maths qui explique l'origine de chaque algorithme de Data Science et de machine Learning. C'est prévu pour 2020 ! :) Merci de me suivre ca fait plaisir de lire tes commentaires a travers les vidéos ! Bon courage et je suis a fond derrière toi !
On est en fin 2022, je tombe sous ces vidéos géniales, franchement merci beaucoup. Ma réponse du coup pour les hyperparamètres: {'metric': 'manhattan', 'n_neighbors': 12, 'weights': 'distance'}
Bonjour Guillaume , un grand merci pour l'effort que tu es entrain de fournir afin de rendre le ML accessible. ça fait des années que je voudrais m'interesser au ML, mais la motivation manquait, grace à tes vidéo je commence à prendre gout et j'ai trouvé qu'on peut tres bien s'amuser avec le ML. J'ai essayé l'exercice et j'ai obtenu un score de 0,8333 avec les parametres suivants:{'metric': 'canberra', 'n_neighbors': 7, 'weights': 'uniform'}
Ton message me fait super plaisir ! :) Bravo pour ta motivation a faire du Machine Learning et c'est génial si tu t'amuses bien en progressant, ca va t'offrir un bel avenir ! Bravo pour tes résultats sur l'exercice.
Grand merci à vous, Pour l'exercice, j'obtiens: 1) Meilleur paramétrage : {'metric': 'manhattan', 'n_neighbors': 17, 'weights': 'distance'} 2) Best Score Train: 0.8949211908931699 3) Best Score Test: 0.7832167832167832 4) Et selon le Learning-curve, il nous faudra encore plus de données pour améliorer notre modele Et comme vous, la fonction de prédiction me dit que j'y serai resté :)
Excellent cours encore une fois. C'est fou par contre, plus j'avance dans les vidéos et plus j'y passe du temps pour bien tout assimiler. Pour ma part j'ai trouvé les hyperparamètres suivants : 'metric': 'manhattan', 'n_neighbors': 24, 'weights': 'distance' avec un score test de 80% environ. Par contre, il faudrait un train set qui fasse au moins 1000 éléments environ pour obtenir des performances intéressantes :) merci encore de partager tes connaissances à travers ces excellentes vidéos :)
Bonjour Guillaume, merci pour tout ton travail très pédagogique. Pour l'exercice, j'ai obtenu : La meilleure combinaison est {'metric': 'manhattan', 'n_neighbors': 7, 'weights': 'uniform'} Le test_score est de 0.82 Il semblerait qu'augmenter le nombre de données pourrait améliorer notre modèle cependant, l'écart-type des données étant assez important, cela n'est pas assuré !
Je suis 100% d'accord avec toi, surtout concernant la variance ! En effet il y a une grande part de hasard dans les gens qui ont survécus au naufrage du titanic.
Tout d'abord bravo à toi pour la qualité exceptionnelle de ces vidéos. J'ai bien compris que le but de la vidéo était la cross-validation mais juste une petite précision pour tout le monde: il n'y a pas de phase d'entrainement pour l'algorithme knn (désolé si c'est dit dans la video et que j'ai loupé ça)
Bonjour Guillaume, tout d'abord 1 grand merci pour vos tutos. La notion d'over-fitting que vous avez détaillée grace aux courbes representatives du train_score et du val_score en utilisant validation_curve() est trés utile. Je souhaite en faire de meme avec GridSearchCV(). L'attribut ( .cv_results_) permet d'avoir un dict() qui renvoit des infos sur notre grid. Mon script: list_mean_train_score = [] for i in grid.cv_results_['mean_train_score']: list_mean_train_score.append(j) list_mean_test_score = [] for j in grid.cv_results_['mean_test_score']: list_mean_test_score.append(j) Tracer les courbes representatives de: list_mean_train_score, list_mean_test_score. Ma question est de savoir s'il n'existe pas un moyen plus simple?
Il faut en effet utiliser .cv_results_ pour faire le graphique que vous souhaitez et votre script est parfaitement adapté pour cela, ce que je conseille, c'est de mettre ce script dans une fonction que vous aurez créée, cela simplifie votre code et vous vous constituez progressivement une bibliothèque de fonctions utiles.
@@MachineLearnia Normal hier ne je comprenais rien mais aujourd'hui je me rends compte que c'est très simple et ce grâce à toi. C'est une question de maitrise et surtout de pédagogie :)
Grand Merci à vous très cher Guillaume. j'ai eu comme hyperparametre : metric : euclidean, n_neighbors : 11 et un score sur le test_set de 96% matrix de confusion : ([[10 , 0 , 0], [0 , 11 , 1], [0 , 0 , 8] ])
Bonjour Guillaume! Tout d'abord un grand merci pour tes vidéos qui sont justes exceptionnelles, très instructives, on les comprend parfaitement, la difficulté est justement dosée, nickel pour un étudiant qui veut se lancer dans le ML comme moi ! Pour l'exercice du Titanic, j'ai visiblement obtenu des résultats similaires à d'autres personnes, mais voici les miens : (0.7495347063310451, {'metric': 'manhattan', 'n_neighbors': 15}) Malheureusement plus que 9 épisodes de cette formation à savourer !
Bonjour, Je suis un peu en retard, mais je viens de faire le TP et j'ai donc trouvé: best_score = 0.7870 avec les hyper_param {'metric': 'manhattan', 'n_neighbors': 15} model.score(X_test, y_test) = 0.7571 Merci Guillaume pour toutes tes vidéos !
Merci Guillaume Pour le TP j'ai trouvé : best_estimator => { metric='manhattan', n_neighbors=14, weights='distance' } score => 0.783 Après avoir tracer la courbe d'apprentissage, on voit qu'on peut améliorer le modéle avec plus de données
Bonjour, merci beaucoup pour ces vidéos de grande qualité ! Je n'avais pas de problème jusqu'à celle-ci, quand j'utilise model.score ou tout autre méthode de validation Jupyter ou Spyder me renvoie : FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning. mode, _ = stats.mode(_y[neigh_ind, k], axis=1) Je ne comprend pas pourquoi, je n'utilise pas directement SciPy, et je n'ai pas trouvé comment enlever ce message (qui n'est pas trop problématique car le code arrive quand même s'exécuter). Pourriez-vous m'aider ? Merci beaucoup !
Bonsoir Guillaume, Avec vos vidéos, le machine learning devient une chose évidente. Je suis heureux de vous suivre et bravo à vous! En relation avec l'exercice, j'ai obtenu 0.74 pour le n_neighbors et manathan pour le metric. Cependant ces hyperparamètres changent à chaque fois que je change la taille de mon jeu d'entraînement, de test et également le cv de GridSearchCV.
Merci beaucoup ! Il est normal que les hyper-params changent si les données changent. Par exemple si vous remélangez vos données et utilisez d'autres données pour le train, alors le nombre de voisin optimal pour la machine va surement etre différent.
Bonjour Guillaume, L'exercice sur le dataset du titanic me donne un Score test de 83,9% avec les hyperparametres suivants : metrics : manhattan, n_neighbors : 14, weights : distance. Pour arriver a ce resultat, j'ai augmenter le nombre de decoupe à 10 ainsi que le nombre de voisins à 100 pour "regarder" un peu plus loin. Je ne sais pas si la démarche est la bonne , mais les resultats sont meilleurs. Selon la learning curve il nous faudrait plus de données mais celle-ci semble s'aplatir à partir de 400 donc pas sûr selon moi que plus de données donneraient de meilleurs resultats. Au passage, merci pour ces videos tres pedagogiques qui me permettent d'apprendre et comprendre plus rapidement, c'est vraiment top! :) Et merci pour la mise en place du Discord c'est cool :)
Les résultats sont intéressants et ton analyse est bonne. Il est tout a fait OK d'avoir un cv=10. Concernant le nombre de voisin, je pense que 100 est pile la limite maximum (je pense qu'au dessus ca serait trop) Pas mal du tout !
Bonjour, Merci beaucoup pour ces vidéos elles me sont très utile. Je signale, que j'ai eu un problème avec la fonction validation_curve. Dans mon cas, il a fallut que je renseigne que le n_neighbors etaient les param_name et que k était le param_range. Merci encore pour les vidéos !
Juste magnifique! Bravo pour la qualité des vidéos et la clarté des explications. Merci infiniment Guillaume. Cerise sur le gâteau: les codes disponibles dans github :-)
Bonjour Guillaume, un grand merci pour cette vidéo très instructive, pédagogique et explicative! c’est un grand plaisir d'avoir des explications et des vidéos aussi claires, bien faites et de haute qualité, Grand merci :). Voilà je voulais aussi vous poser 2 questions simples qui m'ont intrigué. Question 1 : Est ce que si on pouvais choisir un autre valeurdans le cv, ici on a toujours fait cv=5, mais est ce que le changement du cv pourrait avoir des conséquences sur les performances de notre modèle, par exemple peu être avec cv=10 on aurait eu une meilleure performance, ou ç'a n'a rien à avoir. Question 2 : si par exemple on avait un dataset que on en plus plus augmenter car ç'a ne sert à rien via la courbe car la performance ne va plus argumenter, et que on a tous tester les paramètres, les hyperparamètres, d'autres modèles etc... mais on ne peut pas dépasser une performance par exemple de 70% qui je pense pas assez bien, est ce que ce cas peut arriver, et si oui est ce que on peut dire que ce problème, on ne peut pas le résoudre en Machine Learnng ?. Désolé pour mes questions, je sais que je te publie des commentaires assez long et j'en m’excuse pour cela. Merci encore une fois. Cordialement.
Bonjour et merci, ce sont des bonnes questions ! :) Question 1 : Oui le cv joue un rôle dans la performance finale du modèle. Il y a des regles pour choisir un bon cv (mais je ne vais pas les détailler ici) et sans meme connaitre ses regles il faut savoir que le CV peut lui meme etre considérer comme un hyper-parametre (on peut tester différents cv avec une boucle for dans laquelle on fait des gridsearchCV par exemple) Question 2: (question tres intéressante). En principe, un modele est soit en situation d'underfitting (le modele n'est pas assez complexe) soit en overfitting (le modele est trop complexe et varie trop pour bien généraliser). Donc, si vous avez 70% de bonnes réponses, c'est forcément que le modele n'est pas assez "bon" (autres réglages nécessaires, modèle plus complexes comme un réseau de neurones) ou alors que le modele est en overfitting (il faut plus de données, ou bien ajouter une régularisation au model pour limiter sa variance) Une exception a ces situation est si vous essayer de construire un model statistique pour prédire une chose statistiquement imprédictible (par exemple les résultats du LOTO). Dans ce cas, ni le machine learning, ni un modèle traditionnel ne peut atteindre un bon score.
Bonjour Guillaume, Merci pour ces vidéos, elles sont très instructives. A 4:58, le score pour le train_set n'est pas de 100%. Comment cela se fait-il ? Si j'entraine un modèle sur un set alors le score de ce set ne devrait-il pas être de 100% ? Enfin, avez-vous des conseils pour comprendre et voir ce qu'il y a derrière les modèles (par exemple KNeighborClassifier) et les fonctions (par exemple fit) ? Mille merci.
Le train_score ne peux pas toujours atteindre 100% cela dépend de la complexité du projet et du dataset. Par exemple si l'on prend le dataset du Titanic, parmi les victimes on a retrouvé des gens qui avaient tous exactement le même age, le même sexe, le même profil, donc on ne peut pas prédire avec 100% d'exactitude qui va survivre ou qui va périr. Il en va de même pour un modèle. Pour savoir ce qui se cache derriere les Algorithmes, le mieux est de les apprendre (je vais faire une série de videos a ce sujet, mais également une série d'articles sur mon blog) On peut aussi consulter le code source de sklearn, mais il peut-etre difficile a décrypter si l'on est débutant.
Bonjour et merci bcp pour ces explications très claires. Toutefois j'aurais une question. Peut on appliquer ces différentes méthodes à d'autres type de modèles, comme par exemple en régression logistique ou linéaire multiple ? Merci par avance pour votre réponse ;)
j'ai vue cette vidéo plus de 4 fois, chaque fois je découvre autant de chose merci pour le courage que vous m’apporter avec tes super vidéo monsieur le génie. autre chose j'ai vue les différentes métriques utilisées dans l'analyse de régression mais comment savoir quel métrique j' utiliser pour des différent model ?
Merci beaucoup ça me fait super plaisir de savoir que des gens trouvent les vidéos vraiment utiles et qu'ils arrivent a progresser grâce a ces vidéos ! Pour les métriques : Il y a des mesures pour les régressions et les classifications. La vidéos sur les métriques de régression vous informe de ce qu'il faut faire pour choisir la bonne métrique (et je préconise d'utiliser plusieurs métriques pour évaluer un modèle). Pour les classifications, Accuracy est le choix par défaut, et pour les classifications binaires vous pouvez évaluer la précision et le recall (qui sont des rapports entre vrais positifs, vrai négatifs, faux positifs et faux négatifs) Je ferai une vidéo a ce sujet dans peu de temps, en attendant je vous conseille de consulter Wikipedia.
Si certains sont bloqués à 11:15 il faut écrire pour les derniers hyper-paramètres leur nom explicite : train_score,val_score = validation_curve(model, X_train, y_train,param_name='n_neighbors',param_range=k,cv=5)
bonjour Cours trés interessant à la fois theorique et pratique juste une question comment faites vous pour faire apparaitre la liste des parametres qui s'applique à "grid" (13:51 de la video) sur jupyter notebook? Merci d'avance
Bonjour et merci beaucoup. Pour afficher les paramètres, il suffit d’exécuter la ligne model.fit(X, y) dans jupyter. Comme cette ligne nous retourne un modèle, celui-ci est affiché dans la console. Si tu utilises un autre IDE que Jupyter Notebook, alors tu peux faire un print(model.fit(X, y)) A bientôt :)
Thank you, you are the best , Homework : the best score= 0.7776164549304295 the best paramters= {'metric': 'manhattan', 'n_neighbors': 8} score on test set= 0.7832167832167832
Bonjour Guillaume, on vous remercierai jamais assez, mais encore une fois un grand merci. toutefois je voudrais savoir le comportement du train set en fonction des valeurs du paramètre randomstate ?
Random_state permet de fixer le générateur de nombre aléatoire pour qu'il reproduise toujours les mêmes résultats, c'est un bon moyen de comparer efficacement la performance de vos modèles sur des découpes identiques. le nombre choisit dans random_state n'a aucune importance / aucun impact sur vos données
Cher Guilaume, merci pour tes excellentes présentations. Pour évaluer un seul modèle, je pense il faut se baser sur cross-validation pour trouver le vrai score (moyenne) et non un seul score basé sur une seule split. Est ce que c'est juste ?
Best Hyperparameters = {'metric': 'manhattan', 'n_neighbors': 15, 'weights': 'distance '} score=0.783 But, when I have plotted the learning curve , I found that we have an overfitting problem . So getting more data is likely to help
Bonjour Guillaume, merci énormément pour tes videos mais j'ai n'arrive pas à comprendre l'erreur dû au training. La seule chose que j'ai pu trouver est que cette est liee au outlier???
@@salsabilidrissomar8787 Le fait qu'un modele n'atteigne pas 100% de performance sur le train-set est du a 2 choses : 1) le modele a un biais (il est en underfitting) ce qui veut dire que le modele n'est pas assez puissant par rapport a la complexité de la tache, il faut donc opter pour un modele plus puissant (l'entrainer plus longtemps ou bien changer ses hyper-parametres) 2) Le dataset décrit un phénomène non déterministe (ce qui arrive 99% de la vraie vie) ce qui veut dire que plusieurs points sensé avoir la meme position sont en fait différents. Par exemple, dans le naufrage du titanic, vous pouvez avec 2 individus parfaitemant similaires, pourtant l'un aura survécu et l'autre non. C'est le hasard.
Bonjour D'abord je vous remercie beaucoup des leçons que vous exposez sur les machines learning ils sont excellents. Voilà, je travail sur le forecasting concernant le rayonnement solaire. Ma question est ce que les données de la data base doivent être stationnaire en tant que série temporel afin de les faire entraîner sur un modèle machine learning?
Merci infiniment pour cette vidéo très instructive. Tout ces paramètres montre l'importance de comprendre l'aspect mathématique derrière la machine. J'ai fait l'exercice et j'obtiens comme meilleur score au train set 0.894 et 0.797 au test set, n_neighbors=11, metric='manhattan' et weights='distance'. Remarque: pour le GridSearchCV j'ai utilisé un cv= 20. Comment choisir le bon cv stp? Je compare avec les autre personne et pourquoi est-ce que les résultat différer d'une personne à l'autre stp? Merci encore pour cette exercice pratique.
Les résultats peuvent différer selon la découpe initiale des données, il ne faut pas trop s'inquiéter de cette différence, meme si la question est légitime. Pour choisir le bon cv, c'est une histoire de compromis ! Plus cv est grand, plus l'entrainement et l'évaluation sera long, en général, il faut essayer de choisir un cv de telle sorte a ce que le validation set contiennent au minimum 10% de données (s'il y a trop peu de données dans le valset ca peut donner des résultats erronés)
Bonjour Guillaume, Je te remercie beaucoup pour tes excellents cours d'abord, tu es mon meilleur professeur :) J'aimerais savoir pourquoi lorsque je tape "grid.best_params_" cela me renvoie {'metric': 'euclidean', 'n_neighbors': 5} alors que le n_neighbors devrait egale à 9 du coup "model.score(X_test, y_test)" est egale à 0.93333 et la suite est faussée. Par contre si je met manuellement le parametre de n_neighbors à 9, tout revient à la normal comme ton cours. Merci de m'éclairer.
Il me semble avoir déjà répondu a cette question plusieurs fois, donc tu trouveras peut-être quelques informations dans d'autres commentaires. Il n'est pas anormal de tomber sur n_neighbor=9, je suis moi-meme tombé sur cette valeurs de temps en temps lors de la préparation de la vidéo, ca peut dépendre des découpes et du cv, mais il n'y a rien de "casse" dans votre code, et si le résultat peut semble grandement différent, il ne l'est en fait pas tellement, ce qui compte c'est la performance réelle de votre modèle.
Merci pour vos vidéos vous m'avez sauvé mon module 😂, j ai une question à propos du graphique de la fonction validation curve, de ce que j ai compris de votre vidéo corrigé moi si je me trompe, grâce au graphe on peut determiner si il ya overffiting ou non, j ai déduie d apres les resultat de votre gridsearch k = 9 et du graphe que la meilleur valeur en évitant l overfiting est celle où xtrain es la plus haute et en meme temps supérieur a xvalidation, mais je me rend compte en ayant essayé de mon cotès ce n est pas le cas, du coup ma question est à quoi reconnaitons un overfiting depuis les valeurs xtrain et xvalidation sur le graphe ? Encore une fois, je vous remercie enormément pour tout vos efforts, ce n est vrmt pas communc ce que vous faite.
le graphique de validation curve ne permet que d'observer l'évolution du score en fonction d'UN hyper-parametre. En général, si on peut vérifier si notre modèle est en overfitting, on calcule simplement le train_score et le test_score, et si le train_score est bien supérieur au test score, alors c'est un signe d'overfitting (le modèle est sensé bien fonctionné sur le train, mais en le testant dans la réalité il est médiocre) Est-ce-que ma réponse a pu t'aider ? :)
Bonjour Guillaume, merci pour cette vidéo que je trouve très instructive; j'utiliser la fonction GridSearchCv dans mon programme avec le model mplclassifier de sklearn et j'ai fait rentrer 3 paramètres avec leur grille en suivant les directives de la vidéo, mais cela fait 5h qu'il s'entraine sans fin ( j'ai du l'arrêter a un certain moment et diminuer dans les hyper paramètres en entré paarcequ'au départ quand j'avais testé sur 2 paramètre il m'avait donné une réponse au bout de 10 minutes, mais la malgré le fait d'avoir que 3 a présent, l'entraînement s'éternise quand même ) qu'y a-'-il lieu de faire stp ?
Bonjour Guillaume, merci pour ces vidéos d'apprentissages très instructives! J'obtiens comme meilleur score au train set 0.81 et 0.79 au test set, n_neighbors=11, metric='manhattan' et weights='uniform' Une remarque cependant, j'ai regardé les résultats avec des test_size différents (dans train_test_split) et j'obtient des résultats assez identiques mais avec des estimateurs différents au niveau du n_neighbors. Par exemple: test_size = 15% score_train = 0.85, score_test = 0.82, n_neighbors=3 test_size = 25% score_train = 0.81, score_test = 0.81, n_neighbors=9 Existe-il un moyen de savoir la meilleure façon de découper ses data entre train et test set? Et ainsi de savoir le n_neighbors optimal?
Merci ! ta question est intéressante. Il est impossible d'obtenir le n_neighbors optimal (ou tout autre hyper-parametres) en machine learning. Plus il y a de valeurs dans le test_set, plus tu va converger vers les bons réglages (car tu auras confiance que ces réglages te donne de bons résultats sur 1000, puis 100,000, puis 1,000,000 de données dans ton test_set) Voila pourquoi je dis qu'on ne peux pas avoir de réglage optimal pour un algorithme. En effet cela dépend de la taille des train_set/test_set, et cela dépend des découpes que l'on utilise. On peut etre assez sur d'avoir le "bon" réglage quand on test notre algo sur un tres gros paquet de données.
Bonsoir chers GUILLAUME. Je suis un débutant en machine learning. J'ai une question qui me dérange ces derniers temps. Ma question est : Comment savoir quel type constructeur faut-il utiliser pour développer un modèle de machine learning avec les données qu'on possède ??
Bonjour Guillaume, tout d'abord un grand merci pour cette vidéo très instructive ! ça fait plaisir d'avoir des explications aussi claires sur le machine learning ;)
J'ai fait l'exercice du titanic, j'obtiens comme hyperparamètres metric: manhattan, n_neighbors: 17 et weights: distance. Comme meilleur score, j'obtiens 0.783, score que l'on peut améliorer avec plus de données selon les courbes d'apprentissage.
Tres intéressant ! J'encourage tout le monde a lire le commentaire d'Alexis et a mettre un pouce bleu dessus ! Si d'autres personnes ont des réponses, mettez les ci-dessous, c'est important ! Moi aussi je vais faire l'exercice et poster mes réponses ici :)
Merci Alexis a bientôt ! :D
@@MachineLearnia Cette vidéo est une bonne initiative, cependant, il ne permet de s'entrainer sur d'autres dataset,s ses algorithmes sont calqués sur son problème, les fleurs d'iris, c'est quelque chose que l'on trouve à la première recherche sur le net. Comment faire pour appliquer un modèle lorsque ce n'est pas un dataset intégré à la librairie?
@@MachineLearnia Bonjour Guillaume, je trouve aussi exactement le même résultat qu'Alexis après avoir lancé l'optimisation suivante (pas très originale au niveau métriques pour GridSearchCV et cv pour learning_curve). Le tracé de train_score et val_score indique aussi qu'il faudrait plus de données mais j'ai un gros doute là car la courbe "train" décroit dès le premier train_size de 91 !!!!!! Est-ce possible ? Est-ce que tu as couvert le corrigé dans une vidéo (j'en ai regardé plusieurs dont 22).
param_grid = {'n_neighbors': np.arange(1, 20), 'metric': ['euclidean', 'manhattan', 'minkowski'], 'weights': ['uniform', 'distance']}
grid = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
N, train_score, val_score = learning_curve(model, X_train, y_train, train_sizes=np.linspace(0.2, 1.0, 5), cv=5)
@@MachineLearnia j'ai trouve trainnig = 0.76 , test 0.77, n_neighbors= 5 , metric = manhatan pou l'exemple titanic
Bonjour à tous, oui superbe vidéo comme toujours !
J'ai trouvé un best_score de 0.777 avec best_params = {'metric': 'manhattan', 'n_neighbors': 11} et un model.score(X_test, y_test) = 0.713
De belles courbes croissantes globalement en train et validation qui demandent d'autres données pour progresser.
Pas vu non plus de corrections de Guillaume mais ça me semble une bonne 1ere approche vu les autres résultats en commentaires
Bien à tous !
Bonjour Guillaume, je fais une petite pause durant ces cours que je dévore depuis 10 jours. Je ne connaissais ni l'I.A. ni Python. J'arrive encore à m'émerveiller à + de 60 ans ! Je t'envoie un immense merci pour tout ce que tu fais. Et puis il y a un nouveau truc hyper facilitateur quand je bute encore sur la syntaxe : C'est ChatGPT. Il répond à toutes mes questions. Je l'harcèle tellement que je n'ose même plus lui poser de questions , de peur de le déranger 🤪
mieux bosser la documentation que l'outil qui ne fait pas correctement le array slicing en python....ca va vous enseigner beaucoup plus
La quantité de choses que j'apprends à chaque vidéo qui font pourtant seulement 20 minutes... Bluffant, bravo !
Merci beaucoup, c'est mon but d'avoir le plus d'infos précises en 20 minutes
En attendant il ne faut pas 20 minutes pour assimiler les concepts nouveaux.
Il n'est pas rare que chaque vidéo me prenne de 1 à 2 heures : entrainement, tests, etc.
En tout cas merci.
Merci infiniment pour ces excellentes leçons gratuites qui me sauvent littéralement la vie.
J'ai soit disant des cours de cette matière à l'Université...
Grâce à vous, je comprends tout et je m'entraîne efficacement =)
Merci infiniment.
Votre travail est d'utilité publique !
Merci beaucoup pour votre message je suis super heureux de savoir que les vidéos vous aident autant ! :)
Suis devenu avancé en machine learning grâce à toi. Longue vie à toi.
Ça me fait très plaisir de savoir ça. C'est mon but. Donc c'est une petite victoire chaque fois qu'on me dit ça ! Merci
Finalement j'ai trouvé mon mentor que j'ai toujours rêver! Tu me fascine, explication claire , simple et concis!!! You are the best One!!!Mon maître j'attends le cour de C++ et java Niveau expert!
Merci beaucoup ! :)
Je ne sais pas si je vais faire du Java et du C++ en niveau expert (on ne peut pas être bon partout !) mais la chaîne va tout de même proposer du contenu tourné Arduino, C, microprocesseur dans le futur ! :)
Expert en Java JEE et full stack (pour reprendre l'expression très à la mode), j'attends Arduino avec impatience.
Ce n'est pas que les tutoriels soient absents sur le net mais j'attends du concis et du professionnel, ayant une expérience de la programmation bas niveau.
A bientôt.
Vos vidéos me font gagner beaucoup de temps. J'apprends très vite avec vous. Merci Guillaume.
De rien :)
Bravo pour votre pédagogie. On sent que vous êtes passionné et que vous aimez transmettre. Merci !👏👏👏
Super vidéo comme d'habitude.
Pour ce qui est de l'exercice :
Meilleur paramétrage : {'metric': 'manhattan', 'n_neighbors': 17, 'weights': 'distance'}
Meilleur score : 0.7828
L'apprentissage pourrait être amélioré, mais l'expérience n'est pas reproductible.
en fait on peut faire un peu mieux avec :
Meilleur paramétrage : {'metric': 'canberra', 'n_neighbors': 8, 'weights': 'uniform'}
Meilleur score : 0.8161120840630472...
C'est très intéressant ! Un autre abonné (Alexis) a trouvé les mêmes résultats {'metric': 'manhattan', 'n_neighbors': 17, 'weights': 'distance'} avec le même score.
C'est intéressant de comparer cela avec une distance Canberra. Je trouve ça curieux que Canberra (qui est semblable à Manhattan mais avec des coefficients) ait un bon score avec des weights "uniform"
Concernant les courbes d'apprentissage, on pourrai croire que plus de données aideraient a améliorer l'algorithme, mais en se rappelant que les données ont une grande variances (des passagers de même classes, même age, même genre ont parfois survécus, parfois non) alors on peut se rend compte que récolter plus de données ne sera pas forcément utile (meme si les courbes le laissent a penser !) (bravo pour avoir complété l'exercice !)
Longue vie à toi Guillaume, j'ai appris en 20min ce que j'essaie de comprendre depuis 3 mois. Au top la vidéo, je suis fan :)
Merci, ça me fait très plaisir ! :)
La pédagogie à son paroxysme. 👏
Merci Pulsar ;)
Merci Beaucoup , vous êtes mille fois mieux que notre prof de la fac 👏👏👏
Vous êtes le meilleur.
Ca devient vraiment facile avec vous
Mon ultime but est de vous aider pour que vous deveniez meilleur que moi !
Génial, je suis tes vidéos depuis la première de la série spéciale machine learning et c'est épatant. J'éprouve tellement de satisfaction à suivre tes vidéos, merci. C'est limpide et vraiment entraînant !
Merci beaucoup !
Mec merci beaucoup je suis étudiant en M1 info et c'est mon cours (en mieux) que tu viens de faire 😍
Monsieur le professeur BIG CONGRAT! J'en suis de plus de plus épaté par à chaque vidéo! Merci PROF! Hihihi
Merci ! Ce n'est que le début ! (l'avenir sera vraiment cool !) :D
Merci beaucoup Guillaume, vous êtes je pense le meilleur prof que j'ai pu croisé de toute mon existence, excellente présentation, très claires on a même pas besoin de revenir en arrière tout rentre très facilement... encore merci, bises
C'est génial ! Merci beaucoup ca me fait tres plaisir de lire ca ! :)
Merci beaucoup pour ces tuto magnifiquement montés. Vous avez de la pédagogie que nombreux profs n'en ont pas
Merci beaucoup ça me fait très plaisir :)
Bonjour, Guillaume. L'explication sur les données de validation m'a fait sourire. Elle me fait penser aux projets informatiques en entreprise. De mon expérience c'est exactement la même chose ! Si les développeurs travaillent avec en vue les données des tests d'intégration (= test set) alors le code n'est pas vraiment bon puisque qu'ils développent alors des comportements trop en accord avec ces mêmes données et des bugs sont à prévoir en production. C'est là qu'intervient les tests en validation (souvent faits par le client). Ces tests (validation set) vont alors éprouvés réellement le code afin de savoir si il n'y a pas de bug. Je trouve l'analogie vraiment intéressante.
J'adore votre analogie et je la valide a 100% ! Merci d'avoir partagé un peu de votre expérience professionnelle ! :)
Mon modèle de prédiction neuronale pense déjà trop souvent avoir bien prédis la qualité de ta vidéo à venir mais se heurte si souvent à tes bon modèles de vidéos optimiser, Tout ce qui ce conçois bien S'énonce très clairement force à toi Guillaume bon boulot
Ahah Merci beaucoup ! :) Je suis satisfait si la vidéo est claire et précise et qu'elle peut vous aider
Toujours aussi instructif. Un grand merci a toi pour le partage de ton savoir.
Merci beaucoup pour ton commentaire :) Dans le cas ou tu fais l'exercice, dis nous dans les commentaires les performances que tu obtiens, ca serait intéressant ;)
Mais comment tu mets ta variable y, j'ai essayé de faire ça, et la machine me dit que y n'est pas définie
Bravo merci beaucoup pour vos vidéos c'est un régale pour nous RESPECT
Merci beaucoup. Je suis content de savoir ca. Ca me garde motivé :D MERCI !
Chaque vidéo est meilleure que la précédente! Un grand merci!
Merci beaucoup pour ce compliment !
Très dense cette vidéo ! J'ai appris beaucoup de choses merci !
Résultats : metric = manhattan, neighbors ~10-25, weights = distance; need more data; score sur le test set ~ 75-85%
Merci a toi et bravo pour avoir réalisé l'exercice !
C'est drôle, pour ma part la metric c'est euclidean ! Ça peut s'expliquer par quoi d'après vous ?
@@darkiche3689 le hasard selon lequel les données ont été découpées dans les cross_validations
tu es 10 fois meilleur de mon prof ! Merci bcp
ah wep vraiment je suis toujours heureux d'apprendre avec tes tuto je regarde plusieurs fois ces vidéos en pratiquant vraiment c'est fascinant j'ai l'impression que tu demystifies la data science
Merci beaucoup ton commentaire me fait très plaisir ! C'est un honneur de savoir que mes vidéos peuvent autant aider certaines personnes ! :)
Super !
Merci !
Tu démontres très bien en quoi Scikit Learn est un outil très puissant !
Je n'imaginais pas qu'on pouvais optimiser à ce point la recherche d’hyper-paramètre.
Merci Smartful ;) content de voir que tu es toujours la a commenter les vidéos ! :D
Oui et je vais encore montrer beaucoup de choses sur Sklearn ! :)
Bonjour Guillaume, un grand merci pour cette vidéo très instructive ! ça fait plaisir d'avoir des explications aussi claires sur le machine learning ;)
J'ai fait l'exercice du titanic, j'obtiens comme hyperparamètres metric: manhattan, n_neighbors: 7. Comme meilleur score, j'obtiens 0.79, score que l'on peut améliorer avec plus de données selon les courbes d'apprentissage.
Bravo pour l'exercice et merci a toi :)
C'est vraiment impressionnant : J'essaye d'apprendre le ML, en parallèle de tes vidéos, sur des bouquins.... et tu clarifies tellement de chose que je pensais avoir compris dans les livres! Merci à toi. Cette capacité à rendre explicites et intuitives des notions complexes est vraiment rare sur TH-cam je trouve, et ta chaîne la possède c'est une vrai force! :D
Du coup ça me donne une idée pour une prochaine série de vidéo pour ta chaîne:
Les mathématiques derrières le ML.
Je pense que ça rendrait service à beaucoup d'abonnés! (dont moi ;) )
Merci beaucoup Julien. J'ai prévu de faire une série spécial Maths qui explique l'origine de chaque algorithme de Data Science et de machine Learning. C'est prévu pour 2020 ! :)
Merci de me suivre ca fait plaisir de lire tes commentaires a travers les vidéos ! Bon courage et je suis a fond derrière toi !
@@MachineLearnia Ah mais tu me fais un super teasing là! Vivement 2020 :)
@@MachineLearnia Quand ? Quand ? Dis-nous vite...
@@MachineLearnia cette série serait magnifique!! vous avez pu la publier?
On est en fin 2022, je tombe sous ces vidéos géniales, franchement merci beaucoup.
Ma réponse du coup pour les hyperparamètres: {'metric': 'manhattan', 'n_neighbors': 12, 'weights': 'distance'}
Depuis titanic je ne vous quitte plus .Vous + python + CHATgpt +Power BI voilà un mélange détonnant!
Super vidéo, merci Guillaume
Best_params = {'metric': 'manhattan', 'n_neighbors': 9, 'weights': 'distance'}
model.score =0.804
Bonjour Guillaume , un grand merci pour l'effort que tu es entrain de fournir afin de rendre le ML accessible. ça fait des années que je voudrais m'interesser au ML, mais la motivation manquait, grace à tes vidéo je commence à prendre gout et j'ai trouvé qu'on peut tres bien s'amuser avec le ML. J'ai essayé l'exercice et j'ai obtenu un score de 0,8333 avec les parametres suivants:{'metric': 'canberra', 'n_neighbors': 7, 'weights': 'uniform'}
Ton message me fait super plaisir ! :) Bravo pour ta motivation a faire du Machine Learning et c'est génial si tu t'amuses bien en progressant, ca va t'offrir un bel avenir !
Bravo pour tes résultats sur l'exercice.
Grand merci à vous,
Pour l'exercice, j'obtiens:
1) Meilleur paramétrage : {'metric': 'manhattan', 'n_neighbors': 17, 'weights': 'distance'}
2) Best Score Train: 0.8949211908931699
3) Best Score Test: 0.7832167832167832
4) Et selon le Learning-curve, il nous faudra encore plus de données pour améliorer notre modele
Et comme vous, la fonction de prédiction me dit que j'y serai resté :)
Je suis d'accord avec vos résultats, bien joué ! :)
La manière de passer de la cross validation au Grid search CV est juste magnifique!!!!!!!!!!!!!!!!!!!
Merci ! :)
Comme toujours super vidéo, merci !
Merci beaucoup :)
Excellent cours encore une fois. C'est fou par contre, plus j'avance dans les vidéos et plus j'y passe du temps pour bien tout assimiler.
Pour ma part j'ai trouvé les hyperparamètres suivants : 'metric': 'manhattan', 'n_neighbors': 24, 'weights': 'distance' avec un score test de 80% environ. Par contre, il faudrait un train set qui fasse au moins 1000 éléments environ pour obtenir des performances intéressantes :)
merci encore de partager tes connaissances à travers ces excellentes vidéos :)
Bravo pour avoir bien su résoudre l'exercice, et ta conclusion est pertinente ! Je suis heureux si les vidéos t'aident a progresser ! :)
Purée tout mon cours en quelque minute 😍 merciiiiii
vous êtes le meilleur
Bonjour Guillaume, merci pour tout ton travail très pédagogique. Pour l'exercice, j'ai obtenu :
La meilleure combinaison est {'metric': 'manhattan', 'n_neighbors': 7, 'weights': 'uniform'}
Le test_score est de 0.82
Il semblerait qu'augmenter le nombre de données pourrait améliorer notre modèle cependant, l'écart-type des données étant assez important, cela n'est pas assuré !
Je suis 100% d'accord avec toi, surtout concernant la variance ! En effet il y a une grande part de hasard dans les gens qui ont survécus au naufrage du titanic.
Juste Merci avec un grand M Guillaume :)
C'est un plaisir ! Et ça me fait encore plus plaisir quand je reçois des remerciements ! :)
Tout d'abord bravo à toi pour la qualité exceptionnelle de ces vidéos. J'ai bien compris que le but de la vidéo était la cross-validation mais juste une petite précision pour tout le monde: il n'y a pas de phase d'entrainement pour l'algorithme knn (désolé si c'est dit dans la video et que j'ai loupé ça)
Bonjour Guillaume, tout d'abord 1 grand merci pour vos tutos. La notion d'over-fitting que vous avez détaillée grace aux courbes representatives du train_score et du val_score en utilisant validation_curve() est trés utile. Je souhaite en faire de meme avec GridSearchCV().
L'attribut ( .cv_results_) permet d'avoir un dict() qui renvoit des infos sur notre grid.
Mon script:
list_mean_train_score = []
for i in grid.cv_results_['mean_train_score']:
list_mean_train_score.append(j)
list_mean_test_score = []
for j in grid.cv_results_['mean_test_score']:
list_mean_test_score.append(j)
Tracer les courbes representatives de: list_mean_train_score, list_mean_test_score.
Ma question est de savoir s'il n'existe pas un moyen plus simple?
Il faut en effet utiliser .cv_results_ pour faire le graphique que vous souhaitez et votre script est parfaitement adapté pour cela, ce que je conseille, c'est de mettre ce script dans une fonction que vous aurez créée, cela simplifie votre code et vous vous constituez progressivement une bibliothèque de fonctions utiles.
Propre et précis !! Parfait ! Merci beaucoup 😊
Merci beaucoup pour ce commentaire, j'ai pris soin de faire de la qualité, comme toujours !
Extrêmement pédagogique ! Merci beaucoup
Merci beaucoup pour ce commentaire :)
Merci pour tes vidéos. Encore une fois, c'est très clair et vraiment bien détaillé ;)
Merci beaucoup, c'est un plaisir ! :)
Franchement vous êtes un dieu !! super vidéo merci beaucoup
Carrément !? Merci beaucoup :)
@@MachineLearnia Normal hier ne je comprenais rien mais aujourd'hui je me rends compte que c'est très simple et ce grâce à toi. C'est une question de maitrise et surtout de pédagogie :)
Merci beaucoup pour cette vidéo, très claire et très précise :) Cela change des vidéos trop difficiles à suivre :) Merci :)
Merci beaucoup !
ce meilleur Félicitation pour cette belle contribution
Merci beaucoup ! :) Si vous faites l'exercice, dites nous vos performances dans les commentaires !
Merci infiniment ,votre explication est très très très excellent,Allah bless you
Merci beaucoup !
Super génial! Excellent tuteur!! merci :)
Merci beaucoup. ;)
Grand Merci à vous très cher Guillaume.
j'ai eu comme hyperparametre :
metric : euclidean, n_neighbors : 11 et un score sur le test_set de 96%
matrix de confusion :
([[10 , 0 , 0],
[0 , 11 , 1],
[0 , 0 , 8]
])
Bravo d'avoir fait l'exercice, ce sont de bons résultats. :)
Bonjour Guillaume!
Tout d'abord un grand merci pour tes vidéos qui sont justes exceptionnelles, très instructives, on les comprend parfaitement, la difficulté est justement dosée, nickel pour un étudiant qui veut se lancer dans le ML comme moi !
Pour l'exercice du Titanic, j'ai visiblement obtenu des résultats similaires à d'autres personnes, mais voici les miens : (0.7495347063310451, {'metric': 'manhattan', 'n_neighbors': 15})
Malheureusement plus que 9 épisodes de cette formation à savourer !
Merci pour ton message, ca me fait tres plaisir ! :)
merci beaucoup, très claire, je partage tout de suite
Merci beaucoup !
Bonjour,
Je suis un peu en retard, mais je viens de faire le TP et j'ai donc trouvé:
best_score = 0.7870 avec les hyper_param {'metric': 'manhattan', 'n_neighbors': 15}
model.score(X_test, y_test) = 0.7571
Merci Guillaume pour toutes tes vidéos !
Merci Nicolas ! Bien joué pour le TP ! Je te conseille de lire les autres commentaires, il y a des réponses intéressantes
Encore Merci et Bravo
De rien !
vraiment sensationnel ! merci de tout cœur .
Merci beaucoup.
Merci Guillaume
Pour le TP j'ai trouvé :
best_estimator => { metric='manhattan', n_neighbors=14, weights='distance' }
score => 0.783
Après avoir tracer la courbe d'apprentissage, on voit qu'on peut améliorer le modéle avec plus de données
Bravo, je suis d'accord avec vos résultats !
Merci , super vidéo !
Merci beaucoup
Parfait ! Grand Merci !
de rien !
Non Guillaume t'est le meilleur🥰
Super !
Merci !
Bonjour, merci beaucoup pour ces vidéos de grande qualité ! Je n'avais pas de problème jusqu'à celle-ci, quand j'utilise model.score ou tout autre méthode de validation Jupyter ou Spyder me renvoie :
FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.
mode, _ = stats.mode(_y[neigh_ind, k], axis=1)
Je ne comprend pas pourquoi, je n'utilise pas directement SciPy, et je n'ai pas trouvé comment enlever ce message (qui n'est pas trop problématique car le code arrive quand même s'exécuter). Pourriez-vous m'aider ?
Merci beaucoup !
[Solution]
import warnings
warnings.filterwarnings('ignore', category = FutureWarning)
Bonsoir Guillaume,
Avec vos vidéos, le machine learning devient une chose évidente. Je suis heureux de vous suivre et bravo à vous!
En relation avec l'exercice, j'ai obtenu 0.74 pour le n_neighbors et manathan pour le metric. Cependant ces hyperparamètres changent à chaque fois que je change la taille de mon jeu d'entraînement, de test et également le cv de GridSearchCV.
Merci beaucoup !
Il est normal que les hyper-params changent si les données changent. Par exemple si vous remélangez vos données et utilisez d'autres données pour le train, alors le nombre de voisin optimal pour la machine va surement etre différent.
excellent !!
Bonjour Guillaume,
L'exercice sur le dataset du titanic me donne un Score test de 83,9% avec les hyperparametres suivants :
metrics : manhattan, n_neighbors : 14, weights : distance.
Pour arriver a ce resultat, j'ai augmenter le nombre de decoupe à 10 ainsi que le nombre de voisins à 100 pour "regarder" un peu plus loin. Je ne sais pas si la démarche est la bonne , mais les resultats sont meilleurs.
Selon la learning curve il nous faudrait plus de données mais celle-ci semble s'aplatir à partir de 400 donc pas sûr selon moi que plus de données donneraient de meilleurs resultats.
Au passage, merci pour ces videos tres pedagogiques qui me permettent d'apprendre et comprendre plus rapidement, c'est vraiment top! :) Et merci pour la mise en place du Discord c'est cool :)
Les résultats sont intéressants et ton analyse est bonne. Il est tout a fait OK d'avoir un cv=10. Concernant le nombre de voisin, je pense que 100 est pile la limite maximum (je pense qu'au dessus ca serait trop) Pas mal du tout !
Merci pour tes vidéos. J'ai une formation en analyse de données tu me fais réviser les cours en apprenant python
merci,
t'es super
Salut, pourquoi a chaque fois qu'on relance le code, le nombre de voisin de best params change? pourtant les donnée ne changent pas avec le titanic
vous etes tres formidable
Merci beaucoup
Génial !
Merci :)
merci encore
Sans commentaire !!!!!!!!
👍👍👍👍👍👍👍👍
Merci pour ce commentaire sans commentaire !
Bonjour,
Merci beaucoup pour ces vidéos elles me sont très utile.
Je signale, que j'ai eu un problème avec la fonction validation_curve. Dans mon cas, il a fallut que je renseigne que le n_neighbors etaient les param_name et que k était le param_range.
Merci encore pour les vidéos !
Merci !
Juste magnifique! Bravo pour la qualité des vidéos et la clarté des explications. Merci infiniment Guillaume. Cerise sur le gâteau: les codes disponibles dans github :-)
Merci beaucoup ! C'est un plaisir :)
Bonjour Guillaume, un grand merci pour cette vidéo très instructive, pédagogique et explicative! c’est un grand plaisir d'avoir des explications et des vidéos aussi claires, bien faites et de haute qualité, Grand merci :).
Voilà je voulais aussi vous poser 2 questions simples qui m'ont intrigué.
Question 1 : Est ce que si on pouvais choisir un autre valeurdans le cv, ici on a toujours fait cv=5, mais est ce que le changement du cv pourrait avoir des conséquences sur les performances de notre modèle, par exemple peu être avec cv=10 on aurait eu une meilleure performance, ou ç'a n'a rien à avoir.
Question 2 : si par exemple on avait un dataset que on en plus plus augmenter car ç'a ne sert à rien via la courbe car la performance ne va plus argumenter, et que on a tous tester les paramètres, les hyperparamètres, d'autres modèles etc... mais on ne peut pas dépasser une performance par exemple de 70% qui je pense pas assez bien, est ce que ce cas peut arriver, et si oui est ce que on peut dire que ce problème, on ne peut pas le résoudre en Machine Learnng ?.
Désolé pour mes questions, je sais que je te publie des commentaires assez long et j'en m’excuse pour cela.
Merci encore une fois.
Cordialement.
Bonjour et merci, ce sont des bonnes questions ! :)
Question 1 : Oui le cv joue un rôle dans la performance finale du modèle. Il y a des regles pour choisir un bon cv (mais je ne vais pas les détailler ici) et sans meme connaitre ses regles il faut savoir que le CV peut lui meme etre considérer comme un hyper-parametre (on peut tester différents cv avec une boucle for dans laquelle on fait des gridsearchCV par exemple)
Question 2: (question tres intéressante). En principe, un modele est soit en situation d'underfitting (le modele n'est pas assez complexe) soit en overfitting (le modele est trop complexe et varie trop pour bien généraliser). Donc, si vous avez 70% de bonnes réponses, c'est forcément que le modele n'est pas assez "bon" (autres réglages nécessaires, modèle plus complexes comme un réseau de neurones) ou alors que le modele est en overfitting (il faut plus de données, ou bien ajouter une régularisation au model pour limiter sa variance)
Une exception a ces situation est si vous essayer de construire un model statistique pour prédire une chose statistiquement imprédictible (par exemple les résultats du LOTO). Dans ce cas, ni le machine learning, ni un modèle traditionnel ne peut atteindre un bon score.
@@MachineLearnia Merci beaucoup pour vos réponses rapide et explicatives, merci infiniment.
La qualité est au rendez-vous et c'est très instructive comme formation.
Merci beaucoup :)
Bonjour Guillaume,
Merci pour ces vidéos, elles sont très instructives.
A 4:58, le score pour le train_set n'est pas de 100%. Comment cela se fait-il ? Si j'entraine un modèle sur un set alors le score de ce set ne devrait-il pas être de 100% ?
Enfin, avez-vous des conseils pour comprendre et voir ce qu'il y a derrière les modèles (par exemple KNeighborClassifier) et les fonctions (par exemple fit) ?
Mille merci.
Le train_score ne peux pas toujours atteindre 100% cela dépend de la complexité du projet et du dataset. Par exemple si l'on prend le dataset du Titanic, parmi les victimes on a retrouvé des gens qui avaient tous exactement le même age, le même sexe, le même profil, donc on ne peut pas prédire avec 100% d'exactitude qui va survivre ou qui va périr. Il en va de même pour un modèle.
Pour savoir ce qui se cache derriere les Algorithmes, le mieux est de les apprendre (je vais faire une série de videos a ce sujet, mais également une série d'articles sur mon blog)
On peut aussi consulter le code source de sklearn, mais il peut-etre difficile a décrypter si l'on est débutant.
Bonjour et merci bcp pour ces explications très claires. Toutefois j'aurais une question. Peut on appliquer ces différentes méthodes à d'autres type de modèles, comme par exemple en régression logistique ou linéaire multiple ?
Merci par avance pour votre réponse ;)
j'ai vue cette vidéo plus de 4 fois, chaque fois je découvre autant de chose merci pour le courage que vous m’apporter avec tes super vidéo monsieur le génie.
autre chose j'ai vue les différentes métriques utilisées dans l'analyse de régression mais comment savoir quel métrique j' utiliser pour des différent model ?
Merci beaucoup ça me fait super plaisir de savoir que des gens trouvent les vidéos vraiment utiles et qu'ils arrivent a progresser grâce a ces vidéos ! Pour les métriques : Il y a des mesures pour les régressions et les classifications. La vidéos sur les métriques de régression vous informe de ce qu'il faut faire pour choisir la bonne métrique (et je préconise d'utiliser plusieurs métriques pour évaluer un modèle). Pour les classifications, Accuracy est le choix par défaut, et pour les classifications binaires vous pouvez évaluer la précision et le recall (qui sont des rapports entre vrais positifs, vrai négatifs, faux positifs et faux négatifs) Je ferai une vidéo a ce sujet dans peu de temps, en attendant je vous conseille de consulter Wikipedia.
@@MachineLearnia Merci de m'avoir répondre et je te retrouverai dans ta prochain vidéo monsieur le génie,merci
Si certains sont bloqués à 11:15 il faut écrire pour les derniers hyper-paramètres leur nom explicite :
train_score,val_score = validation_curve(model, X_train, y_train,param_name='n_neighbors',param_range=k,cv=5)
Merci de l'avoir précisé !
Merci beaucoup, tu viens de me debugger
bonjour
Cours trés interessant à la fois theorique et pratique
juste une question comment faites vous pour faire apparaitre la liste des parametres qui s'applique à "grid" (13:51 de la video) sur jupyter notebook?
Merci d'avance
Bonjour et merci beaucoup.
Pour afficher les paramètres, il suffit d’exécuter la ligne model.fit(X, y) dans jupyter. Comme cette ligne nous retourne un modèle, celui-ci est affiché dans la console.
Si tu utilises un autre IDE que Jupyter Notebook, alors tu peux faire un print(model.fit(X, y))
A bientôt :)
Thank you, you are the best ,
Homework :
the best score= 0.7776164549304295
the best paramters= {'metric': 'manhattan', 'n_neighbors': 8}
score on test set= 0.7832167832167832
Bonjour Guillaume,
on vous remercierai jamais assez, mais encore une fois un grand merci.
toutefois je voudrais savoir le comportement du train set en fonction des valeurs du paramètre randomstate ?
Random_state permet de fixer le générateur de nombre aléatoire pour qu'il reproduise toujours les mêmes résultats, c'est un bon moyen de comparer efficacement la performance de vos modèles sur des découpes identiques. le nombre choisit dans random_state n'a aucune importance / aucun impact sur vos données
Cher Guilaume, merci pour tes excellentes présentations. Pour évaluer un seul modèle, je pense il faut se baser sur cross-validation pour trouver le vrai score (moyenne) et non un seul score basé sur une seule split. Est ce que c'est juste ?
Best Hyperparameters = {'metric': 'manhattan', 'n_neighbors': 15, 'weights': 'distance '}
score=0.783
But, when I have plotted the learning curve , I found that we have an overfitting problem . So getting more data is likely to help
Merci infiniment pour les efforts.
SVP est ce que vous pouvez faire touts ces étapes en utilisant un dataset images? Merci.
je te remercie
Moi aussi (pour le commentaire)
Bonjour Guillaume, merci énormément pour tes videos mais j'ai n'arrive pas à comprendre l'erreur dû au training. La seule chose que j'ai pu trouver est que cette est liee au outlier???
Bonjour, de quoi parlez-vous ?
@@MachineLearnia en fait je n'ai pas compris pourquoi la performance de modèle dans la phase d'apprentissage n'est pas un à 100 %
@@salsabilidrissomar8787 Le fait qu'un modele n'atteigne pas 100% de performance sur le train-set est du a 2 choses :
1) le modele a un biais (il est en underfitting) ce qui veut dire que le modele n'est pas assez puissant par rapport a la complexité de la tache, il faut donc opter pour un modele plus puissant (l'entrainer plus longtemps ou bien changer ses hyper-parametres)
2) Le dataset décrit un phénomène non déterministe (ce qui arrive 99% de la vraie vie) ce qui veut dire que plusieurs points sensé avoir la meme position sont en fait différents. Par exemple, dans le naufrage du titanic, vous pouvez avec 2 individus parfaitemant similaires, pourtant l'un aura survécu et l'autre non. C'est le hasard.
Bonjour
D'abord je vous remercie beaucoup des leçons que vous exposez sur les machines learning ils sont excellents.
Voilà, je travail sur le forecasting concernant le rayonnement solaire. Ma question est ce que les données de la data base doivent être stationnaire en tant que série temporel afin de les faire entraîner sur un modèle machine learning?
Pas forcément, vous pouvez utiliser un modele ARIMA si les données ne sont pas stationnaires.
Merci
Merci infiniment pour cette vidéo très instructive.
Tout ces paramètres montre l'importance de comprendre l'aspect mathématique derrière la machine.
J'ai fait l'exercice et j'obtiens comme meilleur score au train set 0.894 et 0.797 au test set, n_neighbors=11, metric='manhattan' et weights='distance'.
Remarque: pour le GridSearchCV j'ai utilisé un cv= 20.
Comment choisir le bon cv stp?
Je compare avec les autre personne et pourquoi est-ce que les résultat différer d'une personne à l'autre stp?
Merci encore pour cette exercice pratique.
Les résultats peuvent différer selon la découpe initiale des données, il ne faut pas trop s'inquiéter de cette différence, meme si la question est légitime. Pour choisir le bon cv, c'est une histoire de compromis ! Plus cv est grand, plus l'entrainement et l'évaluation sera long, en général, il faut essayer de choisir un cv de telle sorte a ce que le validation set contiennent au minimum 10% de données (s'il y a trop peu de données dans le valset ca peut donner des résultats erronés)
@@MachineLearnia Ok je comprends mieux. Merci encore pour ces contenus de super qualité.
Merci pour cette vidéo est ce que y en a des vidéos sur le tensorflow le keras?
Je vais bientot produire une série tout entiere sur Tensorflow et Keras ! :)
Bonjour Guillaume,
Je te remercie beaucoup pour tes excellents cours d'abord, tu es mon meilleur professeur :)
J'aimerais savoir pourquoi lorsque je tape
"grid.best_params_" cela me renvoie {'metric': 'euclidean', 'n_neighbors': 5}
alors que le n_neighbors devrait egale à 9 du coup "model.score(X_test, y_test)" est egale à 0.93333 et la suite est faussée.
Par contre si je met manuellement le parametre de n_neighbors à 9, tout revient à la normal comme ton cours.
Merci de m'éclairer.
Il me semble avoir déjà répondu a cette question plusieurs fois, donc tu trouveras peut-être quelques informations dans d'autres commentaires. Il n'est pas anormal de tomber sur n_neighbor=9, je suis moi-meme tombé sur cette valeurs de temps en temps lors de la préparation de la vidéo, ca peut dépendre des découpes et du cv, mais il n'y a rien de "casse" dans votre code, et si le résultat peut semble grandement différent, il ne l'est en fait pas tellement, ce qui compte c'est la performance réelle de votre modèle.
Merci pour vos vidéos vous m'avez sauvé mon module 😂, j ai une question à propos du graphique de la fonction validation curve, de ce que j ai compris de votre vidéo corrigé moi si je me trompe, grâce au graphe on peut determiner si il ya overffiting ou non, j ai déduie d apres les resultat de votre gridsearch k = 9 et du graphe que la meilleur valeur en évitant l overfiting est celle où xtrain es la plus haute et en meme temps supérieur a xvalidation,
mais je me rend compte en ayant essayé de mon cotès ce n est pas le cas, du coup ma question est à quoi reconnaitons un overfiting depuis les valeurs xtrain et xvalidation sur le graphe ?
Encore une fois, je vous remercie enormément pour tout vos efforts, ce n est vrmt pas communc ce que vous faite.
le graphique de validation curve ne permet que d'observer l'évolution du score en fonction d'UN hyper-parametre. En général, si on peut vérifier si notre modèle est en overfitting, on calcule simplement le train_score et le test_score, et si le train_score est bien supérieur au test score, alors c'est un signe d'overfitting (le modèle est sensé bien fonctionné sur le train, mais en le testant dans la réalité il est médiocre)
Est-ce-que ma réponse a pu t'aider ? :)
@@MachineLearnia ui c'est bcp plus claire mnt, merci 👍👍
Merci beaucoup pour cette formation claire et précise, mais pour la suite des leçons??
Les vidéos suivantes arrivent très bientôt ! Je fais de mon mieux pour sortir au minimum une vidéo par semaine :)
Bonjour Guillaume,
merci pour cette vidéo que je trouve très instructive;
j'utiliser la fonction GridSearchCv dans mon programme avec le model mplclassifier de sklearn et j'ai fait rentrer 3 paramètres avec leur grille en suivant les directives de la vidéo, mais cela fait 5h qu'il s'entraine sans fin ( j'ai du l'arrêter a un certain moment et diminuer dans les hyper paramètres en entré paarcequ'au départ quand j'avais testé sur 2 paramètre il m'avait donné une réponse au bout de 10 minutes, mais la malgré le fait d'avoir que 3 a présent, l'entraînement s'éternise quand même ) qu'y a-'-il lieu de faire stp ?
Bonjour Guillaume, merci pour ces vidéos d'apprentissages très instructives!
J'obtiens comme meilleur score au train set 0.81 et 0.79 au test set, n_neighbors=11, metric='manhattan' et weights='uniform'
Une remarque cependant, j'ai regardé les résultats avec des test_size différents (dans train_test_split) et j'obtient des résultats assez identiques mais avec des estimateurs différents au niveau du n_neighbors.
Par exemple:
test_size = 15% score_train = 0.85, score_test = 0.82, n_neighbors=3
test_size = 25% score_train = 0.81, score_test = 0.81, n_neighbors=9
Existe-il un moyen de savoir la meilleure façon de découper ses data entre train et test set? Et ainsi de savoir le n_neighbors optimal?
Merci ! ta question est intéressante.
Il est impossible d'obtenir le n_neighbors optimal (ou tout autre hyper-parametres) en machine learning. Plus il y a de valeurs dans le test_set, plus tu va converger vers les bons réglages (car tu auras confiance que ces réglages te donne de bons résultats sur 1000, puis 100,000, puis 1,000,000 de données dans ton test_set)
Voila pourquoi je dis qu'on ne peux pas avoir de réglage optimal pour un algorithme. En effet cela dépend de la taille des train_set/test_set, et cela dépend des découpes que l'on utilise. On peut etre assez sur d'avoir le "bon" réglage quand on test notre algo sur un tres gros paquet de données.
Chapeau ! Merci infiniment . est-ce qu'on peut esperer des series similaires sur le deep learning. Merci
Bonjour Et merci :)
Oui le premier épisode sur le deep learning va bientot sortir
Bonsoir chers
GUILLAUME. Je suis un débutant en machine learning. J'ai une question qui me dérange ces derniers temps. Ma question est :
Comment savoir quel type constructeur faut-il utiliser pour développer un modèle de machine learning avec les données qu'on possède ??