Merci beaucoup pour ce message qui me touche. Je fais ca en toute humilité et c'est mon plus grand plaisir de recevoir de tels message qui confirment que mes vidéos et mon livre aident des gens :) Merci beaucoup !
bonjour MR @@MachineLearnia j'espere que vous allez bien j'ai une question concernant les données manquantes et j'aurais besoins de votre avis dans l'immédiat si possible
Encore un grand merci pour tes cours. Tu nous donnes du savoir, une bonne pédagogie et une dose d'humour. Sans parler du montage vidéo qui prend beaucoup de temps vraiment. Chapeau 🤠. On voit seulement la partie visible de l'iceberg avec le produit fini en vidéo mais il y a un travail colossal derrière. Merci beaucoup pour tout ça
Merci infiniment pour la qualité de vos vidéos, je suis devenu passionné par la ML et ça grâce à votre simplicité et générosité. Je suis sûr qu'il y'a encore bcp des choses en ML à apprendre de vos vidéos.
C'est toujours important de choisir la méthode pour traiter les données manquantes car, ce n'est pas évident, mais cela affecte énormément la qualité des modèles. Merci beaucoup de cette vidéo Guillaume.
Bonjour, je regarde pas la vidéo car je ne comprend pas tout et ça ne m'intéresse pas énormément mais sache que c'est quand même super ! A chaque fois, je regarde la vidéo juste pour liker et regarder quelques minutes, même si ça ne me sert pas, je te soutiens 😉.
Salut Enzo ! Oh mince je suis désolé de l'apprendre mais je te remercie énormément pour ton soutien ! Pourrais-je savoir ce qui t'intéresserais comme contenu ? (ton commentaire a suscité ma curiosité) merci ! :D
@@MachineLearnia En fait je ne suis pas passioné de machine learning, or ta chaîne est basé dessus. Ce qui m'intéresserait, pourquoi pas le Back-end d'un site Web en Django par exemple. Mais encore une fois, je sais que ta chaîne est faites pour du machine learning, donc je comprendrais totalement si tu le fais pas^^ Je t'ai découvert en suivant les premiers tutos de la série jusqu'au machine learning ou je ne suivais plus trop :(.
@@Enzo-js5uv Ah oui je me souviens parfaitement de ton commentaire pour Django. Arf je suis désolé de ne pas pouvoir t'aider dans l'immédiat, d'autant plus que je ne suis pas un expert de Django. J'avais cependant appris les bases grâce aux vidéos de Sentdex. Si tu ne le connais pas je te conseille de les voir. Merci beaucoup pour ton soutien tu m'as l'air quelqu'un de super sympa c'est dommage que je ne puisse pas t'aider plus que ca.. :( Mais je compte faire des vidéos de vulgarisation a l'avenir qui pourraient intéresser un panel plus large de personnes peut-etre que celles-ci te plairont un peu plus :)
@@MachineLearnia Ah ça peut être bien ! Mais ne t'inquiètes pas x), c'est mieux que tu fasses des cours sur ce que tu maîtrises et ce que t'aimes faire, je trouverais bien un cours dessus :), je vais d'ailleurs aller voir Sentdex, merci du conseil 😊
Thanks a lot for this great effort .It was a concise and smooth lab which I enjoyed it. (I have few Udemy courses I bought, but I find yours by far better ) . I guess you have to think ro make a dedicated course on Udemy.
@@aimeritedonald6689 Ah merci c'est un plaisir quand on me dit ça ! Parfois je n'ai aucun retour indiquant si oui ou non ma vidéo a permis de débloquer certaines personnes sur leur problèmes. Alors merci c'est très encourageant pour moi ! Quel était ton problème précisément ?
@@MachineLearnia je travaillait sur un dataset qui contenait de bonnes et de mauvaises données à la fois, et quand j'entrnais mon modèle sa me donnait pas de bonne précision, j'avais eu l'impréssion que comme suis débutant dans la chose je laisse pour le moment et en apprennant d'avantage j'aurais la solution un jour, et du coup.. la semaine qui a suivi t'as mit une vidéo qui parlait du pré-processing. et j'ai donc compris mon problème.
Super ! Merci beaucoup. Petite question : n'y a-t-il pas un risque d'overfitting lorsqu'on fait de l'imputation ? Si je remplace toutes les valeurs manquantes par la moyenne, je vais renforcer la tendance des données ? (Surtout si j'ai une proportion importante de valeurs manquantes, disons 30%)
Salut ! Je ne dirais pas que c'est de l'overfitting, mais un problème de biais, dans le sens où l'on biaise notre dataset avec trop de données modifiées / déformées. Donc oui on risque d'avoir un modele biaisé, c'est pourquoi il faut bien réfléchir à la technique d'imputation que l'on utilise. Ca peut-etre une des méthodes vues dans cette vidéo, ou bien de l'interpolation avec Scipy, ou encore une élimination de certaines lignes ou colonnes (quand vous avez trop de valeurs manquantes comme ici)
Toujours à la hauteur Monsieur Guillaume Saint-Cirgue, nous vous remercions infiniment pour vos efforts et votre style d'explication qui est pour moi le plus préféré. J'ai juste une petite question s'il vous plait, est ce qu'on effectue le nettoyage du dataset (les données) avant sa subdivision en trainset et testset ou on fait l'inverse ?
bonjour guillaume tout d’abord merci pour ce que tu fais...en quelques vidéos tu nous apprend plus que n'importe qui...stp je voudrais savoir si tu peux dans l'une de tes prochaines vidéo faire un programme avec le "modèle de mélange gaussien" ou du moins un exemple avec python car je voudrais d'une part mieux comprendre cette notion et aussi savoir comment la programmer ...merci encore une fois...
Bonjour Guillaume et merci pour tes vidéos, je ne suis pas sur de comprendre la partie où tu expliques qu'il ne faut pas faire de fuite d'informations vers le X_test mais que par ailleurs on prend pour moyenne du X_test la moyenne calculé sur le X_train, est ce que prendre la moyenne du X_test pour les valeurs manquantes n'est pas plus indiqué pour ne pas faire de fuite?
Salut ! Non, je vais te donner un exemple. Admettons que tu analyses la hauteur des arbres d'une foret. Tu connais le diametre du tronc et tu cherches a prédire la hauteur a partir du tronc. Tu as 1000 arbres dans le dataset, tu divises en 800 / 200 s'il te manques des infos dans le trainset (les 800) alors tu vas dire "bon on va prendre le diametre moyen, genre 50cm) Tu entraines ton modele, et maintenant tu veux t'en servir sur de futures données, comme celles du test. Mais dans le test aussi il te manque des infos, aors tu remplaces par la moyenne encore une fois. Mais pas par la moyenne du test, ca sera une erreur de logique (pas une fuite pour le coup). Car ton modele a été entrainé pour comprendre un échantillon d'arbres (les 800 de bases) qui ont un tronc moyen de 50cm. Si ca se trouve, dans les données de test, tu n'as pas eu de chance, et ce sont tous des arbres dont le tronc est plus fin, peut-etre une moyenne de 40cm, ou peut-etre pas ! Quoi qu'il en soit, ca va perturber ton modele qui appris a dire "ok cet arbre je ne le connais pas, on va dire qu'il est dans la moyenne de ce que j'ai apris par le passé, donc il fait 50cm) Autre argument (si jamais le précédent ne t'as pas convaincu) : Quand tu déploies ton modele a l'avenir, il fait des prédictions les unes apres les autres (donc c'est comme si ton dataset ne contenant qu'UNE seule donnée) -> comment faire une moyenne la dessus ? On ne peut pas. Donc on prend la moyenne du TrainSet.
Si jai des valeurs d'un même référence etalées sur plusieurs 6 lignes, p. ex. , et j'ai à faire la prédiction de la 7ième. et Ceci se répète pour d'autres référence. Devrais-je les transposer pour obtenir une ligne singilière par reférence ensuite faire le traitement de prédiction ? Quellw approche pourrais-je entreprendre. ?
Je ne suis pas totalement sur de parfaitement comprendre la question, mais si vous voulez parler de time series, je vous invite a essayer Scipy avec la fonction interp1d et les autres fonctions temporelles
Encore un grand Merci pour vos vidéos, j'ai une question : est ce que on peut utiliser la regression linéaire pour estimer les valeurs manquantes (continues), si oui est ce que on peut inclure la variable "target" pour son entrainement, pourriez vous me décrire les avantage et les inconvénients de cette technique . merci
Cette question est parfaitement légitime. C'est un peu l'idée de IterativeImputer, que je n'ai pas présenté dans cette vidéo, car cet imputer est encore en version "test" dans sklearn. Il permet de prédire quels sont les valeurs manquantes NaN d'une variables en fonction de ce qu'il voit dans les autres variables : donc c'est comme ce que vous voulez dire ici. Personnellement je n'utilise pas cette technique, car en data science j'essaie de suivre le principe du rasoir d'Ockham ("faisons simple"). Effectuer des imputations propres et explicites permet de mieux comprendre le modèle que l'on développe par la suite.
Superbe vidéo, j'ai décidé de me documenter sur le machine-learning et j'ai découvert cette chaîne avec ses magnifiques vidéos, grâce à toi j'ai un assez bon niveau théorique et je voudrais passer à la pratique toutefois, la barrière du langage de programmation se présente à moi. D'après mes recherches et ce que j'ai vu python est beaucoup utilisé mais en poussant mes recherches je constate qu'il est plus propice pour le prototypage que pour la production (certains préconisent le C/C++, JAVA... pour la mise en production de ses modèles). Je suis un peu indécis entre python, C/C++ et Go. Selon toi quel est le plus approprié pour le machine-learning en production et surtout pour les algorithmes d'apprentissage par renforcement?
Bonjour et merci, je suis content de savoir que les vidéos vous aident. Python va bien au delà du prototypage, le temps de réponse est certes plus long et consomme plus d'energie que C/C++/Java, mais beaucoup de projets ne font pas la différences entre un temps de réponse de 10 ms et un temps de réponse de 20 ms... Si vous êtes certains de devoir programmer un system embarqué, alors il vous faut en effet apprendre le C ou C++, mais on parle la d'un niveau de 5 années d'études, il faut comprendre le fonctionnement d'un micro-processor etc, et ca ne s'apprend pas en 3 mois sur Internet. Si vous débutez en programmation (comme vous dites) je vous conseille fortement de commencer par Python, car cela vous permet d'améliore vos compétences en quelques mois, alors que le C/C++ requiert des années de pratique pour vraiment atteindre un bon niveau (car on ne parle pas de faire une petite application, mais de développer des programmes complexes)
bonjour, j'utilise le knnimputer sur une jeu de données dans mon jupyter notebook, pas très gros environ 320000lignes et 8 colonnes et le knn est surper long 5 à 6 min rééellement , j'ai cru que c'était dû au fait d'avoir scaler les données avant mais même resultat avec ou sans normalisation. est ce normale? merci et merci pour vos vidéos
je me demandais, qu'en est-il des time series ? un dataset avec disons des données manquantes systématiques chaque samedi et dimanche, doit-on droper ces intervales de temps ? les remplir avec des données supposées (mean, median etc.) ? quelle est la bonne façon de faire ?
Excellente question ! Bien sur cela dépend du dataset et du problème de time series. Donc selon le cas, certaines méthodes que tu as citées seront intelligentes tandis que d'autres un peu moins. En général, si une variables contient beaucoup de valeurs manquantes (c'est a toi de choisir le seuil, car tout dépend) on peut carrement éliminer cette variable, ou la ramplacer par un MissingIndicator (j'ai remarqué avec beaucoup d'expérimentation que ca fonctionne bien). Sinon, pour les timeseries, j'utiliserais les fonctions de Scipy pour analyser les tendances, et aussi la fonction interp1d. Pour les utiliser dans une pipeline, on peut tenter de les injecter dans FunctionTransformer dont j'ai parlé dans la vidéo 22/30.
@@MachineLearnia donc finalement ça tient véritablement à la nature des données elle-mêmes (ce que je pressentais un peu sans en être certain). typiquement je pense à du forecasting de cotations sur les marchés ; si on a des données toutes les minutes ou toutes les 5min, on se retrouve chaque week-end avec un "trou", un bloc contigu et assez important de NaN, et la reprise le lundi ne correspond pas nécessairement à la clôture le vendredi, or je ne sais pas vraiment quelle serait la bonne façon de traiter ce problème, intuitivement j'aurais tendance à droper basiquement tout le week-end, faire comme s'il n'existait simplement pas... ps: on te le dit souvent mais ta chaine est vraiment au top, ta volonté de faire des vidéos chiadées, claires et didactiques, et la somme de travail que ça implique sont perceptibles. je suis très fan 👍
Bonjour, Lorsqu'on "unifie" ou "linéarise" les variables indépendantes les valeurs sont comprises entre -2 et +2. Après les calculs, il est important de retrouver les valeurs initiales, par exemple lors de l'affichage des résultats dans un graphe. En effet et par exemple dans le cas de l'estimation des salaires, un client ne comprendrait pas qu'un employé de sa société perçoive entre -2 et +2 euros. Comment donc retrouver les vraies valeurs car il y a bien une corrélation entre les valeurs initiales et les valeurs unifiées ? Merci d'avance pour ta réponse. A+ ;)
Si vous voulez parler d'une normalisation avec par exemple le transformer StandarScaler, alors il suffit d'utiliser la méthode "inverse_transform()" pour remettre les données a leur échelle initiale, en respectant les rapports de distance
@@MachineLearnia Merci beaucoup : cela fait des semaines que j'essaie d'avoir cette réponse, pourtant très simple. A+ ;)
3 роки тому
Salut Guillaume, actuellement, je suis en train de nettoyer un dataset, issu d'un join de datasets indéxés sur des timestamps. Mes données manquantes dans le dataset final viennent du fait que les datasets initiaux sont des données de capteurs météorologiques indépendants, qui n'ont pas collecté de mesures aux mêmes instants. Comment faire pour combler ces vides ? Une piste que j'envisage serait de regrouper les timestamps par tranches de 5, 10 ou 15 minutes AVANT de faire le join. Est-ce que cette approche est valide (car j'ai une sérieuse réserve sur les imputers, pour ce cas particulier) ?
Bonjour, c'est un probleme classique en ingénierie. On peut faire comme ce que tu dis, ou bien faire une interpolation linéaire entre chaque colonne, a toi de voir.
3 роки тому
@@MachineLearnia merci pour le conseil, l’interpolation serait certainement une bonne option. Entre temps, j’ai utilisé la fonction fillna, avec la method ffill. Pour mon cas, ça pourrait suffire.
Merci vous êtes le meilleur, j'ai une question concernant la dernière application , à chaque exécution l'algo me donne des résultats diffèrents par exemple run1 =>{'knnimputer__n_neighbors': 2}/run2=>{'knnimputer__n_neighbors': 3} , quels sont les paramètres qui modifier le résultat à chaque exécution ???
Bonjour, vous vouelz parler d'une gridsearchCV je suppose ? C'est parce qu'il faut fixer l'initialisation aléatoire de la Cross Validation pour qu'elle effectue toujours la meme découpe de votre dataset (random_state = 0)
Bonjour, J'aurais voulu savoir si c'était possible d'avoir quelques éclaircissements ou des orientations concernant la nomenclature adéquate des paramètres à optimiser lors de la construction du dictionnaire , exemple donné sur la vidéo ('knnimputer__n_neighbor') entre __ et car sur le site scikit-learn, je ne m'y retrouve pas trop. Merci de votre aide
@@MachineLearnia Bonjour ce que je n'arrive pas à maitriser c'est lors de la construction du dictionnaire des paramètres la dénomination à respecter concernant les clés. Exemple de la vidéo 'knnimputer__n_neighbor', pourquoi un double undescore, par exemple? Je ne sais pas si je suis plus clair. Merci
pouvez vous me confirmer si GridsearchCv peut optimiser à la fois les parametres des transformateurs et de model d'estimation en meme temps ? et comment differencier entre les deux catégories de ces parametres. MErci
Merci pour la vidéo. Une question simple sur la dernière partie sur la combinaison KNNImputer et GridSearchCV. Pourquoi séparer le dataset en train et test puisque le but n'est pas de faire des prédictions, mais bien d'imputer les valeurs manquantes ? Pourquoi ne pas directement travailler sur X et y ? A quoi sert le X_test ici ?
Il ne faut pas imputer les valeurs manquantes en tenant compte de ce qu'il y a dans X_test (c'est a dire qu'il ne faut pas imputer un Dataset X tout entier, car il peut y avoir une fuite d'information - un data leak - entre le train et le test par la suite). Par exemple si on fait un impute en utilisant la moyenne, alors le fait de faire la moyenne sur toutes les données X va indirectement indquer a la machine certaines infos concernant le Test_set.
On peut aussi faire du machine learning avec des données non structurées ?? histoire de voir comment sa peut marcher sans les neurals networks !! ou bien... le machine learning suporte pas un max données ??
Que l'on utilise du Deep Learning ou du Machine Learning, il faut au préalablement pré-traiter les données non structurée pour leur confier un certains format, celles sont alors un peu plus "structurées" que ce qu'on veut bien admettre. Donc oui c'est possible d'utiliser des modeles de machine learnig classique (pas de réseau de neurones) sur des données non-structurées, meme si ce n'est pas forcément le choix vers lequel je m'orienterai personnellement. Je préfere utiliser un réseau de neurones pour tout ce qui est images, son, musique,...
@@aimeritedonald6689 Pas exactement. Pour commencer, le Deep Learning est par définition compris dans le Machine Learning, donc les techniques de Deep Learning appartiennent a la sphère ML. Ensuite, si on exclut les réseaux de neurones, on peut faire bien plus que de la Classfication avec les Algorithmes classiques de ML. On peut faire des regressions, des classifications, du clustering, de la la détection d'anomalie, ou encore de la réduction de dimensions. Mais rien que la classification et la régression regroupe a elles seules la grande majorité des projets envisageables. Par exemple, prédire la résistance d'un pont en un certain point peut être effectue avec un modèle de régression (même si pour cette tache on n'utilise tout simplement pas de Machine Learning ni de Deep Learning, l'exemple permet ici de souligner le fait que les modèles de régressions sont bien souvent sous-estimés par les amateurs)
Bonjour Guillaume Super travail toutes ces vidéos! J'ai deux questions : 1 - En executant plusieurs fois le programme de l'application sur le titanic que vous donnez, j'obtiens un résultat à chaque fois différent. Une fois il donne : {'knnimputer__n_neighbors': 1} , puis je l'execute une seconde fois, il donne :{'knnimputer__n_neighbors': 3}, puis 4 A quoi est due cette instabilité du résultat? 2 - j'ai essayé de m'inscrire à discord mais cela m'est refusé??? Merci à vous.
Bonjour, le modele de KNN est constitué a 100% des données qu'on lui fournit (le modele = les données) donc il dépend intégralement des données du split de la cross-validation. Je crois vous avoir répondu la même chose sur discord (ou alors c'est une incroyable coïncidence que 2 personnes posent la même question au même moment) :) Bienvenue dans la communauté et si vous avez d'autres questions n'hésitez pas ! :)
Bonsoir, merci pour cette vidéo. j'ai une petite question à propos de l'optimisation des modèles par GridSearchCV ou par validation_curve ça ne marche pas pour l'algorithme KNNImputer pour les cible "Y" multiclasses. Donc est ce que il y a une façon d’optimiser les paramètres de KNNImputer, et que est ce que tu dis à propos de Sklean pour l'imputation de données manquantes (riche en nombre de méthodes?) ou il existe des bibliothèques python plus riches.
Bonsoir ! KNNImputer est relativemnet nouveau donc je vais devoir enquêter un peu pour comprendre pourquoi tu obtiens ce problème. Est-ce-que tu cherches a compléter la partie Y de ta Dataset ou bien juste la partie X ? (parce qu'en lisant ta question j'ai l'impression que tu cherches a compléter les valeurs y manquantes, mais ce n'est pas le rôle d'un Imputer, ce qui expliquerait pourquoi ça ne marche pas)
Salut guillaume, j'ai fini la série de vidéo sur python spécial machine learning. Et je travaille sur le dataset de la COVID-19, j'ai essayé de retirer toutes les NAN values avec le SimpleImputer (strategy=constant, fill_values=0), mais quand j'ai fait un dataset.head je me rends compte qu'il reste encore des NAN values que je peux clairement voir sur le dataframe. J'ai essayé un dropna() , mais lorsque je l'utilise il y a tellement de NAN values que la fonction supprime toutes les lignes du dataframe. Je ne sais plus quoi faire peut tu me donner un conseil ou une astuce pour réussir à nettoyer ce dataset?
Bonjour Guillaume J'ai reçu mail hier annonçant la sortie de la video 23 mais je ne peux la visualiser : UA-cam me dit "vidéo privée"... Quand deviendra-t-elle public ? Merci
Salut Guillaume, J'ai eu un problème a l'upload de la vidéo, donc je l'ai désactivée et j'ai immédiatement remis la vidéo en téléchargement sur UA-cam (elle est désormais disponible) ^^
Encore merci pour ces super tutos! J'ai une question sur la partie à 9:30 quand on essaye de chercher les meilleurs paramètres de notre imputer KNN. Si j'ai bien compris, l'utilisation de GridSearchCV se base sur les performances de notre modèle. Donc quand on l'utilise sur l'imputer est-ce qu'on ne serait pas plutôt en train de trouver les paramètres de l'imputer qui prédit les données pour lesquelles la machine est "plus à l'aise", plutôt que les données les plus fidèles à la réalité? Autrement dit, est-ce que le fait d'utiliser GridSearchCV sur l'imputer "transforme" les données de manière à obtenir un meilleur score?
Oui, l'optimisation de l'imputer KNN avec GridsearchCV transforme les données de maniere a obtenir un meilleur score (c'est la réponse a votre question finale). Cependant, on travaille toujours en faisant l'hypothese que le score que l'on obtient est le score que la machine obtiendra dans la réalité (votre question d'avant) car on garde suffisamment de données de coté (avec un test set, et avec le principe de validation croisée)
Tout d'abord, bravo pour les qualités pédagogiques des vidéos. Question : peut-on se servir de knn_imputer avant d'utiliser knn_classifier? N'est ce pas une source de biais ? Merci par avance pour la réponse.
Oui c'est possible et ca n'est pas une source de probleme en théorie. Mais dans la pratique je ne le ferai pas, car KNNImputer est assez "risqué" et KNN_classifier n'est pas un algorithme tres performant.
Bonjour Guillaume! Je suis vraiment débutante dans ce domaine. Et peut être je vais poser une question débile. Je travaille sur un mini projet dont l'objectif est de prédir le time to event (casse) pour un réseau d'eau potable. Le problème est que les données en possession manquent beaucoup d'information (des casses non repotées (Date de casse)). Ma question c'est (au lieu de faire des recherches pendant des heures sur internet sachant que je comprends pas tout) : Est ce que dans ce cas est possible d'utiliser l'ANN pour générer des données (les variables pour chaque tuyau: matériau, date de pose, date de casse, collectivité) de manière intelligente? Je vous remercie d'avance
Bonjour Olfa, désolé pour ma réponse tardive (j'ai déménagé) Oui c'est possible de faire de l'augmentation de donnée avec des ANN : regarder sur Google pour trouver des tutoriels de GAN (ou bien directement sur le site de Tensroflow) Ca demande un peu d'expérience pour y arriver par contre. Et surtout voici un conseil tres important : Ne mettez surtout pas de données issues de votre GAN dans le test set !!! (le test set doit rester pur, et ne doit pas comprendre de données inventées, c'est tres dangeureux). Bon courage !
Merci pour ce vidéo extremement utile! vraiment merci. Est-ce que KnnImputer peut imputer les données qualitatives aussi bien que les données quantitatives? Si oui, est-ce que le principe c'est de compter la moyenne des valeurs pour les var quantitatives et le most frequent pour les var. qualitatives , bien sur uniquement pour les échantillons les plus semblables?
Bonjour, je ne connais pas l'amputation multiple, mais c'est peut-etre que je la connais sous un autre nom. Donc je ne peux pas vraiment répondre a la question, navré
Merci beaucoup pour tout, vos explications, votre pédagogie et votre savoir, moi qui suis débutant en ML et étudiant j'apprends beaucoup avec vous plus qu'ailleurs. SVP, excusez moi encore mais je suis la série depuis le début et je me mêle les pinceaux un peu avec les méthodes: fit, transform, fit_transform, predict; au début on utilisait que fit, puis est sont venu les deux autres et je ne fait plus la différence entre les trois, et surtout qui utilise les X et qui utilisent le target y ? Merci infiniment. Bon courage.
Bonjour et merci beaucoup. En Machine Learning, il existe 2 types d'objets : des etimateurs (qui font des prédictions X-> y) et des transformeurs (qui transforment nos données X->X). Pour développer ces objets, il faut toujours utiliser une méthode fit(). Pour les estimateurs : fit(X, y) Pour les transformateurs: fit(X) Une fois entrainés, on peut utiliser ces objets : pour faire des prédictions avec les estimateurs : predict(X) pour transformer des données avec les transformers : transform(X) Pour aller plus vite, on peut aussi utiliser des fonctions telle que fit_transform (mais si cela vous embrouille, vous pouvez l'oublier, elle n'est pas nécessaire)
@@MachineLearnia merci bien mais je suis plus specialisé en gravimetrie et les données sont en 3 colonnes (longitude,latitude et anomalies) et je voulais ressortir une carte d'anomalie et plus faire des études statitisques mais mon soucis est comment m'y prendre stp aide moi le language python me passionne beaucoup
Bonjour Guillaume, vous faites un excellent boulot, je vous remercie. Une question, je voudrais savoir comment on peut bien parser les logs avec machine learning en classant les élément du fichier texte par date, heure, type, séparateur, adresse ip :port, Greedydata, .... ou bien les classer par famille proche ? Merci.
Bonjour et merci ! Je ne suis pas sur de comprendre la question a 100%. quand vous parlez de log, vous ne faites pas références a logarithme, mais a des enregistrements ?
@@MachineLearnia oui je vais référence aux enregistrements. Par exemple sur cette ligne: 07/07/2020 10:23:12:234 [soum] 123:23:44 crs : >> sms je veux faire le parsing c'est dire à chaque fois il rencontre les types. 07/07/2020 il les prend comme date 10:23:12:234 commet temps comme word [soum] comme word 123:23:44 comme data crs comme word : comme data >> comme data sms comme sms
Bonjour monsieur, comment vous allez? J'espère bien. Je travaille sur un projet de machine learning sur la prédiction de réussite en licence des étudiants orientés à l'université Norbert Zongo. C'est projet rentre dans le cadre en vue d'appliquer mes connaissances que j'ai acquis lors de votre formation sur UA-cam. Je suis confronté à un problème de données parce que je veux utiliser des données réelles. J'ai au total 5657 donnée mais au niveau de ma variable cible ( target ), les données manquantes sont au nombre de 2033. La raison est que je ne dispose la liste de leur résultat de licence. En un mot, je ne sais pas si les 2033 étudiants ont réussi leurs licences ou pas. Face à cette situation, quelle sont les approches que vous pouvez me proposer ? Dans l'attente d'une réponse à ma situation, veuillez agréer l'expression de ma plus haute considération
Bonjour, est-ce que tu parles d'anonymisation des données dans une de tes vidéos ? Que faire quand on doit travailler avec un dataset contenant des noms, prénoms, numéros de téléphone contenus en vrac dans des morceaux de texte ? Je ne parle pas de tableurs csv avec des colonnes nom, prénoms, identifiants bien distincts. Ce serait trop facile de les enlever. Je parle bien de champs texte contenant par exemple, une note d'incident ou un commentaire utilisateur.
Bonjour, il faut encrypter les données, tout simplement. C'est une autre discipline dans laquelle je n'ai pas le meme niveau de compétence qu'en Machine learning, Mais on peut faire de l'encryptage basique assez facilement en remplaçant chaque lettre de l'alphabet par un caractère spécial (mais ce n'est pas efficace, n'importe qui peut cracker le code)
@@MachineLearnia c'est une des approches que j'ai pu voir en ligne, par contre, dans mes problèmes de classifications en NLP, je trouve ça très pratique d'utiliser un language model déjà entraîné sur wikitext-103 (transfer learning) avant de le fine tuner avec mon corpus de textes cibles et d'enfin recycler l'encodeur dans un nouveau classfier. Dans ce cas, j'imagine qu'il faudrait que j'extraie le fichier de vocabulaire du premier language model pour le coder de la même manière (c'est plus un codage qu'un chiffrement, d'ailleurs). Ça te semble faisable ? Orthodoxe ? Sans perte d'accuracy ?
Pour le risque de craquer le code, si je ne code pas chaque lettre mais chaque mot en codant le fichier de vocabulaire qui est créé lors de la "numericalization" (dictionnaire qui a chaque indice entier associe un mot), je pense que j'évite le risque de l'attaque statistique qui tient compte de la probabilité distribuée de l'apparition de chaque lettre dans une phrase dans une langue donnée. Corrige-moi si je me trompe.
Oui je vois l'idée et ca me semble faisable. Le mieux est de tester l'idée pour mesurer les résultats. Il est important de rappeler que le Machine Learning est un domaine d'étude tres expérimental : On préfère tester des idées et mesurer leur performance plutôt que de méditer longtemps sur la faisabilité d'un projet.
Bonjour Guillaume, désolé si ma question ne n'est pas en rapport avec cette vidéo; je tiens d'abord à vous félicitez pour votre livre qui donne les informations sur la data science , Bravo! je veux savoir si vous avez fais une vidéo formation sur la création de fichier python exécutable sous MacOs avec l'environnement anaconda, si oui donnez moi le lien de la vidéo ? svp si c'est n'est pas le cas, il serait vraiment chouette d'en faire une. Merci!
Merci pour la vidéo ! Mais du coup avec la première méthode de remplacer les valeurs manquantes par la moyenne...ceci ne risque pas d'augmenter encore plus la "moyenne" bref en un mot ....c est pas dangereux comme technique ? ( après je suppose que ça dépend du nombre de valeur manquantes....) Ps il y a t il une vidéo qui parle spécifiquement du nettoyage ?
Une règle d'or a respecter : ne pas imputer des données lorsque plus de 50% des données sont manquantes. Non je n'ai pas encore faire des vidéos sur ce sujet en particulier mais ca ne saurait tarder.
l'imputer comment il fait réellement la différence entre X et X_test pour qu’il puisse remplacer les "nan" dans X_test par les moyennes trouvées dans X? Sinon Merci pour cette formation :)
data.dtypes Dst Port object Protocol object Timestamp object Flow Duration object Tot Fwd Pkts object ... Idle Mean object Idle Std object Idle Max object Idle Min object Label object Length: 80, dtype: object come j-'ai tape a command sauivant data = data.astype(float).apply(pd.to_numeric) ValueError: could not convert string to float help
Merci pour votre générosité, c'est très pédagogique.
Merci encore guillaume de toujours garder ta simplicité et ta rigueur dans toutes les vidéos produites jusqu'alors force à toi
Merci beaucoup pour ce message qui me touche. Je fais ca en toute humilité et c'est mon plus grand plaisir de recevoir de tels message qui confirment que mes vidéos et mon livre aident des gens :) Merci beaucoup !
bonjour MR @@MachineLearnia j'espere que vous allez bien j'ai une question concernant les données manquantes et j'aurais besoins de votre avis dans l'immédiat si possible
Encore un grand merci pour tes cours.
Tu nous donnes du savoir, une bonne pédagogie et une dose d'humour.
Sans parler du montage vidéo qui prend beaucoup de temps vraiment.
Chapeau 🤠.
On voit seulement la partie visible de l'iceberg avec le produit fini en vidéo mais il y a un travail colossal derrière.
Merci beaucoup pour tout ça
Merci beaucoup cher ami. c'est toujours agréable de recevoir un message qui reconnait le temps investi dans les vidéos. A bientôt ! :)
Merci infiniment pour la qualité de vos vidéos, je suis devenu passionné par la ML et ça grâce à votre simplicité et générosité. Je suis sûr qu'il y'a encore bcp des choses en ML à apprendre de vos vidéos.
Votre message me fait tres plaisir ! :)
merci pour la qualité de vos videos et votre generosité
Merci, c'est un plaisir
Super vidéo ! Merci !
L'absence d'information c'est de l'information !
C'est vraiment très intéressant ! Cela peut ouvrir de nombreuses perspectives !
Je suis content que ca t'ai plu ! ;)
C'est toujours important de choisir la méthode pour traiter les données manquantes car, ce n'est pas évident, mais cela affecte énormément la qualité des modèles.
Merci beaucoup de cette vidéo Guillaume.
Oui vous avez totalement raison, merci beaucoup :)
Vous êtes le meilleur. Merci infiniment
Merci beaucoup ! A bientôt :)
Bonjour, je regarde pas la vidéo car je ne comprend pas tout et ça ne m'intéresse pas énormément mais sache que c'est quand même super ! A chaque fois, je regarde la vidéo juste pour liker et regarder quelques minutes, même si ça ne me sert pas, je te soutiens 😉.
Salut Enzo ! Oh mince je suis désolé de l'apprendre mais je te remercie énormément pour ton soutien !
Pourrais-je savoir ce qui t'intéresserais comme contenu ? (ton commentaire a suscité ma curiosité) merci ! :D
@@MachineLearnia En fait je ne suis pas passioné de machine learning, or ta chaîne est basé dessus.
Ce qui m'intéresserait, pourquoi pas le Back-end d'un site Web en Django par exemple.
Mais encore une fois, je sais que ta chaîne est faites pour du machine learning, donc je comprendrais totalement si tu le fais pas^^
Je t'ai découvert en suivant les premiers tutos de la série jusqu'au machine learning ou je ne suivais plus trop :(.
@@Enzo-js5uv Ah oui je me souviens parfaitement de ton commentaire pour Django. Arf je suis désolé de ne pas pouvoir t'aider dans l'immédiat, d'autant plus que je ne suis pas un expert de Django. J'avais cependant appris les bases grâce aux vidéos de Sentdex. Si tu ne le connais pas je te conseille de les voir. Merci beaucoup pour ton soutien tu m'as l'air quelqu'un de super sympa c'est dommage que je ne puisse pas t'aider plus que ca.. :(
Mais je compte faire des vidéos de vulgarisation a l'avenir qui pourraient intéresser un panel plus large de personnes peut-etre que celles-ci te plairont un peu plus :)
@@MachineLearnia Ah ça peut être bien ! Mais ne t'inquiètes pas x), c'est mieux que tu fasses des cours sur ce que tu maîtrises et ce que t'aimes faire, je trouverais bien un cours dessus :), je vais d'ailleurs aller voir Sentdex, merci du conseil 😊
Super vidéo Merci beaucoup professeur Guillaume!! je crois que je vais avoir du boulot ce weekend pour appliquer tout ceci ahahaah!!
Merci Ulrich ;) Ah c'est bien que tu pratiques immédiatement, bravo ! Si tu as la moindre question, n'hésites pas, tu me connais ;)
Vidéo claire et pédagogique merci!
Merci beaucoup Julien ;)
Merci Guillaume, toujours très clair.
Thanks a lot for this great effort .It was a concise and smooth lab which I enjoyed it. (I have few Udemy courses I bought, but I find yours by far better ) . I guess you have to think ro make a dedicated course on Udemy.
Thanks a lot! It's an honour to hear that from you guys! I want to keep this content open to everyone for free!
pile à l'heure !! je me lance toute suite
Quelle ponctualité ! Je suis impressionné ahah
@@MachineLearnia disons que... j'attendais cela,
tes dernières vidéos m'ont aidé à résoudre certaines difficultés. merci bien...
@@aimeritedonald6689 Ah merci c'est un plaisir quand on me dit ça ! Parfois je n'ai aucun retour indiquant si oui ou non ma vidéo a permis de débloquer certaines personnes sur leur problèmes. Alors merci c'est très encourageant pour moi ! Quel était ton problème précisément ?
@@MachineLearnia je travaillait sur un dataset qui contenait de bonnes et de mauvaises données à la fois, et quand j'entrnais mon modèle sa me donnait pas de bonne précision, j'avais eu l'impréssion que comme suis débutant dans la chose je laisse pour le moment et en apprennant d'avantage j'aurais la solution un jour, et du coup.. la semaine qui a suivi t'as mit une vidéo qui parlait du pré-processing. et j'ai donc compris mon problème.
Oh merci oui je vois que ça a du être utile, le pre-processing c'est super important ! Merci de me l'avoir signalé
Top ! ✔
Merci
Super ! Merci beaucoup.
Petite question : n'y a-t-il pas un risque d'overfitting lorsqu'on fait de l'imputation ? Si je remplace toutes les valeurs manquantes par la moyenne, je vais renforcer la tendance des données ? (Surtout si j'ai une proportion importante de valeurs manquantes, disons 30%)
Salut !
Je ne dirais pas que c'est de l'overfitting, mais un problème de biais, dans le sens où l'on biaise notre dataset avec trop de données modifiées / déformées.
Donc oui on risque d'avoir un modele biaisé, c'est pourquoi il faut bien réfléchir à la technique d'imputation que l'on utilise. Ca peut-etre une des méthodes vues dans cette vidéo, ou bien de l'interpolation avec Scipy, ou encore une élimination de certaines lignes ou colonnes (quand vous avez trop de valeurs manquantes comme ici)
@@MachineLearnia Salut ! Merci pour ta réponse. Effectivement maintenant que tu le dis c'est plutôt du biais que de l'overfitting :)
merci infiniment 😍😍
De rien :D
Toujours à la hauteur Monsieur Guillaume Saint-Cirgue, nous vous remercions infiniment pour vos efforts et votre style d'explication qui est pour moi le plus préféré. J'ai juste une petite question s'il vous plait, est ce qu'on effectue le nettoyage du dataset (les données) avant sa subdivision en trainset et testset ou on fait l'inverse ?
Merci beaucoup :)
La bonne pratique est de toujours découper les données en train et test en premier lieu, et ensuite nettoyer les données du trainset
bonjour guillaume tout d’abord merci pour ce que tu fais...en quelques vidéos tu nous apprend plus que n'importe qui...stp je voudrais savoir si tu peux dans l'une de tes prochaines vidéo faire un programme avec le "modèle de mélange gaussien" ou du moins un exemple avec python car je voudrais d'une part mieux comprendre cette notion et aussi savoir comment la programmer ...merci encore une fois...
Merci beaucoup pour ton retour ;)
Oui je vais faire ca alors, une vidéo sur les Gaussian Mixtures et comment les programmer avec Sklearn.
merci infiniment
Bonjour Guillaume et merci pour tes vidéos, je ne suis pas sur de comprendre la partie où tu expliques qu'il ne faut pas faire de fuite d'informations vers le X_test mais que par ailleurs on prend pour moyenne du X_test la moyenne calculé sur le X_train, est ce que prendre la moyenne du X_test pour les valeurs manquantes n'est pas plus indiqué pour ne pas faire de fuite?
Salut ! Non, je vais te donner un exemple.
Admettons que tu analyses la hauteur des arbres d'une foret. Tu connais le diametre du tronc et tu cherches a prédire la hauteur a partir du tronc.
Tu as 1000 arbres dans le dataset, tu divises en 800 / 200
s'il te manques des infos dans le trainset (les 800) alors tu vas dire "bon on va prendre le diametre moyen, genre 50cm)
Tu entraines ton modele, et maintenant tu veux t'en servir sur de futures données, comme celles du test.
Mais dans le test aussi il te manque des infos, aors tu remplaces par la moyenne encore une fois. Mais pas par la moyenne du test, ca sera une erreur de logique (pas une fuite pour le coup). Car ton modele a été entrainé pour comprendre un échantillon d'arbres (les 800 de bases) qui ont un tronc moyen de 50cm. Si ca se trouve, dans les données de test, tu n'as pas eu de chance, et ce sont tous des arbres dont le tronc est plus fin, peut-etre une moyenne de 40cm, ou peut-etre pas ! Quoi qu'il en soit, ca va perturber ton modele qui appris a dire "ok cet arbre je ne le connais pas, on va dire qu'il est dans la moyenne de ce que j'ai apris par le passé, donc il fait 50cm)
Autre argument (si jamais le précédent ne t'as pas convaincu) : Quand tu déploies ton modele a l'avenir, il fait des prédictions les unes apres les autres (donc c'est comme si ton dataset ne contenant qu'UNE seule donnée) -> comment faire une moyenne la dessus ? On ne peut pas. Donc on prend la moyenne du TrainSet.
@@MachineLearnia D'accord oui ça fait complètement sens maintenant ! Je te remercie pour ta réponse extrêmement détaillée !
Si jai des valeurs d'un même référence etalées sur plusieurs 6 lignes, p. ex. , et j'ai à faire la prédiction de la 7ième. et Ceci se répète pour d'autres référence. Devrais-je les transposer pour obtenir une ligne singilière par reférence ensuite faire le traitement de prédiction ?
Quellw approche pourrais-je entreprendre. ?
Je ne suis pas totalement sur de parfaitement comprendre la question, mais si vous voulez parler de time series, je vous invite a essayer Scipy avec la fonction interp1d et les autres fonctions temporelles
Encore un grand Merci pour vos vidéos,
j'ai une question : est ce que on peut utiliser la regression linéaire pour estimer les valeurs manquantes (continues), si oui est ce que on peut inclure la variable "target" pour son entrainement, pourriez vous me décrire les avantage et les inconvénients de cette technique . merci
Cette question est parfaitement légitime. C'est un peu l'idée de IterativeImputer, que je n'ai pas présenté dans cette vidéo, car cet imputer est encore en version "test" dans sklearn. Il permet de prédire quels sont les valeurs manquantes NaN d'une variables en fonction de ce qu'il voit dans les autres variables : donc c'est comme ce que vous voulez dire ici.
Personnellement je n'utilise pas cette technique, car en data science j'essaie de suivre le principe du rasoir d'Ockham ("faisons simple"). Effectuer des imputations propres et explicites permet de mieux comprendre le modèle que l'on développe par la suite.
Superbe vidéo, j'ai décidé de me documenter sur le machine-learning et j'ai découvert cette chaîne avec ses magnifiques vidéos, grâce à toi j'ai un assez bon niveau théorique et je voudrais passer à la pratique toutefois, la barrière du langage de programmation se présente à moi. D'après mes recherches et ce que j'ai vu python est beaucoup utilisé mais en poussant mes recherches je constate qu'il est plus propice pour le prototypage que pour la production (certains préconisent le C/C++, JAVA... pour la mise en production de ses modèles). Je suis un peu indécis entre python, C/C++ et Go. Selon toi quel est le plus approprié pour le machine-learning en production et surtout pour les algorithmes d'apprentissage par renforcement?
Bonjour et merci, je suis content de savoir que les vidéos vous aident. Python va bien au delà du prototypage, le temps de réponse est certes plus long et consomme plus d'energie que C/C++/Java, mais beaucoup de projets ne font pas la différences entre un temps de réponse de 10 ms et un temps de réponse de 20 ms...
Si vous êtes certains de devoir programmer un system embarqué, alors il vous faut en effet apprendre le C ou C++, mais on parle la d'un niveau de 5 années d'études, il faut comprendre le fonctionnement d'un micro-processor etc, et ca ne s'apprend pas en 3 mois sur Internet.
Si vous débutez en programmation (comme vous dites) je vous conseille fortement de commencer par Python, car cela vous permet d'améliore vos compétences en quelques mois, alors que le C/C++ requiert des années de pratique pour vraiment atteindre un bon niveau (car on ne parle pas de faire une petite application, mais de développer des programmes complexes)
@@MachineLearnia Merci pour les précisions, je retiens que pour l'apprentissage par renforcement en robotique le C est plus adapté.
bonjour,
j'utilise le knnimputer sur une jeu de données dans mon jupyter notebook, pas très gros environ 320000lignes et 8 colonnes et le knn est surper long 5 à 6 min rééellement , j'ai cru que c'était dû au fait d'avoir scaler les données avant mais même resultat avec ou sans normalisation. est ce normale? merci et merci pour vos vidéos
je me demandais, qu'en est-il des time series ? un dataset avec disons des données manquantes systématiques chaque samedi et dimanche, doit-on droper ces intervales de temps ? les remplir avec des données supposées (mean, median etc.) ? quelle est la bonne façon de faire ?
Excellente question ! Bien sur cela dépend du dataset et du problème de time series. Donc selon le cas, certaines méthodes que tu as citées seront intelligentes tandis que d'autres un peu moins. En général, si une variables contient beaucoup de valeurs manquantes (c'est a toi de choisir le seuil, car tout dépend) on peut carrement éliminer cette variable, ou la ramplacer par un MissingIndicator (j'ai remarqué avec beaucoup d'expérimentation que ca fonctionne bien).
Sinon, pour les timeseries, j'utiliserais les fonctions de Scipy pour analyser les tendances, et aussi la fonction interp1d. Pour les utiliser dans une pipeline, on peut tenter de les injecter dans FunctionTransformer dont j'ai parlé dans la vidéo 22/30.
@@MachineLearnia donc finalement ça tient véritablement à la nature des données elle-mêmes (ce que je pressentais un peu sans en être certain).
typiquement je pense à du forecasting de cotations sur les marchés ; si on a des données toutes les minutes ou toutes les 5min, on se retrouve chaque week-end avec un "trou", un bloc contigu et assez important de NaN, et la reprise le lundi ne correspond pas nécessairement à la clôture le vendredi, or je ne sais pas vraiment quelle serait la bonne façon de traiter ce problème, intuitivement j'aurais tendance à droper basiquement tout le week-end, faire comme s'il n'existait simplement pas...
ps: on te le dit souvent mais ta chaine est vraiment au top, ta volonté de faire des vidéos chiadées, claires et didactiques, et la somme de travail que ça implique sont perceptibles. je suis très fan 👍
Bonjour,
Lorsqu'on "unifie" ou "linéarise" les variables indépendantes les valeurs sont comprises entre -2 et +2.
Après les calculs, il est important de retrouver les valeurs initiales, par exemple lors de l'affichage des résultats dans un graphe.
En effet et par exemple dans le cas de l'estimation des salaires, un client ne comprendrait pas qu'un employé de sa société perçoive entre -2 et +2 euros.
Comment donc retrouver les vraies valeurs car il y a bien une corrélation entre les valeurs initiales et les valeurs unifiées ?
Merci d'avance pour ta réponse.
A+ ;)
Si vous voulez parler d'une normalisation avec par exemple le transformer StandarScaler, alors il suffit d'utiliser la méthode "inverse_transform()" pour remettre les données a leur échelle initiale, en respectant les rapports de distance
@@MachineLearnia Merci beaucoup : cela fait des semaines que j'essaie d'avoir cette réponse, pourtant très simple.
A+ ;)
Salut Guillaume, actuellement, je suis en train de nettoyer un dataset, issu d'un join de datasets indéxés sur des timestamps. Mes données manquantes dans le dataset final viennent du fait que les datasets initiaux sont des données de capteurs météorologiques indépendants, qui n'ont pas collecté de mesures aux mêmes instants. Comment faire pour combler ces vides ?
Une piste que j'envisage serait de regrouper les timestamps par tranches de 5, 10 ou 15 minutes AVANT de faire le join. Est-ce que cette approche est valide (car j'ai une sérieuse réserve sur les imputers, pour ce cas particulier) ?
Bonjour, c'est un probleme classique en ingénierie. On peut faire comme ce que tu dis, ou bien faire une interpolation linéaire entre chaque colonne, a toi de voir.
@@MachineLearnia merci pour le conseil, l’interpolation serait certainement une bonne option. Entre temps, j’ai utilisé la fonction fillna, avec la method ffill. Pour mon cas, ça pourrait suffire.
Merci vous êtes le meilleur, j'ai une question concernant la dernière application , à chaque exécution l'algo me donne des résultats diffèrents par exemple run1 =>{'knnimputer__n_neighbors': 2}/run2=>{'knnimputer__n_neighbors': 3} , quels sont les paramètres qui modifier le résultat à chaque exécution ???
Bonjour, vous vouelz parler d'une gridsearchCV je suppose ? C'est parce qu'il faut fixer l'initialisation aléatoire de la Cross Validation pour qu'elle effectue toujours la meme découpe de votre dataset (random_state = 0)
Bonjour, J'aurais voulu savoir si c'était possible d'avoir quelques éclaircissements ou des orientations concernant la nomenclature adéquate des paramètres à optimiser lors de la construction du dictionnaire , exemple donné sur la vidéo ('knnimputer__n_neighbor') entre __ et car sur le site scikit-learn, je ne m'y retrouve pas trop. Merci de votre aide
Bonjour, désolé je ne comprends pas trop la question au niveau du " entre __ et " qu'est-ce-que vous ne comprenez pas ?
@@MachineLearnia Bonjour ce que je n'arrive pas à maitriser c'est lors de la construction du dictionnaire des paramètres la dénomination à respecter concernant les clés. Exemple de la vidéo 'knnimputer__n_neighbor', pourquoi un double undescore, par exemple? Je ne sais pas si je suis plus clair. Merci
Le double underscore est précisé quelque part dans la documentation, c'est en fait la seule choses a connaitre en terme de syntaxe.
@@MachineLearnia Merci
Merci bcp, on commence kan le deep learning ?
dans 1-2 mois environ
pouvez vous me confirmer si GridsearchCv peut optimiser à la fois les parametres des transformateurs et de model d'estimation en meme temps ? et comment differencier entre les deux catégories de ces parametres. MErci
Oui je confirme que c'est possible, j'ai montré comment le faire dans la video 22/30 sur le preprocessing, les transformeurs et les pipelines
@@MachineLearnia merci bcp
Merci pour la vidéo. Une question simple sur la dernière partie sur la combinaison KNNImputer et GridSearchCV.
Pourquoi séparer le dataset en train et test puisque le but n'est pas de faire des prédictions, mais bien d'imputer les valeurs manquantes ? Pourquoi ne pas directement travailler sur X et y ? A quoi sert le X_test ici ?
Il ne faut pas imputer les valeurs manquantes en tenant compte de ce qu'il y a dans X_test (c'est a dire qu'il ne faut pas imputer un Dataset X tout entier, car il peut y avoir une fuite d'information - un data leak - entre le train et le test par la suite). Par exemple si on fait un impute en utilisant la moyenne, alors le fait de faire la moyenne sur toutes les données X va indirectement indquer a la machine certaines infos concernant le Test_set.
@@MachineLearnia Donc si je comprends bien le but est de faire de l'imputation en vue de la phase ML et non de faire de l'imputation simple...
pour le Knn imputer quand on découpe les donnés en test_set et train_set est-ce qu'on met le random_state = 101
Pas forcément, mais je vous conseille de mettre un random_state, quelque soit le numéro
salut... Merci ... Tu pourrais nous en faire un sur le traitement de langage naturel? la classification des textes
Salut ! Oui ca sera pour une future playlist de vidéos car le sujet est long et ne se traite pas en 1 vidéo
Machine Learnia d’accord ça marche.. je reste à l’écoute
On peut aussi faire du machine learning avec des données non structurées ?? histoire de voir comment sa peut marcher sans les neurals networks !!
ou bien... le machine learning suporte pas un max données ??
Que l'on utilise du Deep Learning ou du Machine Learning, il faut au préalablement pré-traiter les données non structurée pour leur confier un certains format, celles sont alors un peu plus "structurées" que ce qu'on veut bien admettre. Donc oui c'est possible d'utiliser des modeles de machine learnig classique (pas de réseau de neurones) sur des données non-structurées, meme si ce n'est pas forcément le choix vers lequel je m'orienterai personnellement.
Je préfere utiliser un réseau de neurones pour tout ce qui est images, son, musique,...
@@MachineLearnia alors... dois je conclure donc qu'avec du ML on peut que faire de la classification ??
@@aimeritedonald6689 Pas exactement. Pour commencer, le Deep Learning est par définition compris dans le Machine Learning, donc les techniques de Deep Learning appartiennent a la sphère ML. Ensuite, si on exclut les réseaux de neurones, on peut faire bien plus que de la Classfication avec les Algorithmes classiques de ML. On peut faire des regressions, des classifications, du clustering, de la la détection d'anomalie, ou encore de la réduction de dimensions.
Mais rien que la classification et la régression regroupe a elles seules la grande majorité des projets envisageables. Par exemple, prédire la résistance d'un pont en un certain point peut être effectue avec un modèle de régression (même si pour cette tache on n'utilise tout simplement pas de Machine Learning ni de Deep Learning, l'exemple permet ici de souligner le fait que les modèles de régressions sont bien souvent sous-estimés par les amateurs)
@@MachineLearnia merci beucoup !! je comprend mieux maintenant.
Je valide vos réponses guillaume au passage bonne Explications, trés basic mais super claire et efficaces
Merci beaucoup, est il possible ''d importer un dataset contenu dans son bureau avec seaborn'' si oui ''comment''
Bonjour, pour importer un dataset, utilisez pandas avec la fonction pd.read_csv(). Je t'invite a revoir la vidéo sur Pandas. (17/30)
@@MachineLearnia je peux le faire pandas sauf qu'avec ça j arrive pas y accéder a cause de la version pandas très élevée
Bonjour Guillaume
Super travail toutes ces vidéos!
J'ai deux questions :
1 - En executant plusieurs fois le programme de l'application sur le titanic que vous donnez, j'obtiens un résultat à chaque fois différent.
Une fois il donne : {'knnimputer__n_neighbors': 1} , puis je l'execute une seconde fois, il donne :{'knnimputer__n_neighbors': 3}, puis 4
A quoi est due cette instabilité du résultat?
2 - j'ai essayé de m'inscrire à discord mais cela m'est refusé???
Merci à vous.
Bonjour, le modele de KNN est constitué a 100% des données qu'on lui fournit (le modele = les données) donc il dépend intégralement des données du split de la cross-validation. Je crois vous avoir répondu la même chose sur discord (ou alors c'est une incroyable coïncidence que 2 personnes posent la même question au même moment) :)
Bienvenue dans la communauté et si vous avez d'autres questions n'hésitez pas ! :)
Bonsoir, merci pour cette vidéo. j'ai une petite question à propos de l'optimisation des modèles par GridSearchCV ou par validation_curve ça ne marche pas pour l'algorithme KNNImputer pour les cible "Y" multiclasses. Donc est ce que il y a une façon d’optimiser les paramètres de KNNImputer, et que est ce que tu dis à propos de Sklean pour l'imputation de données manquantes (riche en nombre de méthodes?) ou il existe des bibliothèques python plus riches.
Bonsoir ! KNNImputer est relativemnet nouveau donc je vais devoir enquêter un peu pour comprendre pourquoi tu obtiens ce problème. Est-ce-que tu cherches a compléter la partie Y de ta Dataset ou bien juste la partie X ? (parce qu'en lisant ta question j'ai l'impression que tu cherches a compléter les valeurs y manquantes, mais ce n'est pas le rôle d'un Imputer, ce qui expliquerait pourquoi ça ne marche pas)
Salut guillaume, j'ai fini la série de vidéo sur python spécial machine learning. Et je travaille sur le dataset de la COVID-19, j'ai essayé de retirer toutes les NAN values avec le SimpleImputer (strategy=constant, fill_values=0), mais quand j'ai fait un dataset.head je me rends compte qu'il reste encore des NAN values que je peux clairement voir sur le dataframe. J'ai essayé un dropna() , mais lorsque je l'utilise il y a tellement de NAN values que la fonction supprime toutes les lignes du dataframe. Je ne sais plus quoi faire peut tu me donner un conseil ou une astuce pour réussir à nettoyer ce dataset?
Il s'agit du dataset qu'on a étudié dans les vidéos ?
Bonjour Guillaume
J'ai reçu mail hier annonçant la sortie de la video 23 mais je ne peux la visualiser : UA-cam me dit "vidéo privée"...
Quand deviendra-t-elle public ?
Merci
Salut Guillaume,
J'ai eu un problème a l'upload de la vidéo, donc je l'ai désactivée et j'ai immédiatement remis la vidéo en téléchargement sur UA-cam (elle est désormais disponible) ^^
Encore merci pour ces super tutos!
J'ai une question sur la partie à 9:30 quand on essaye de chercher les meilleurs paramètres de notre imputer KNN. Si j'ai bien compris, l'utilisation de GridSearchCV se base sur les performances de notre modèle. Donc quand on l'utilise sur l'imputer est-ce qu'on ne serait pas plutôt en train de trouver les paramètres de l'imputer qui prédit les données pour lesquelles la machine est "plus à l'aise", plutôt que les données les plus fidèles à la réalité?
Autrement dit, est-ce que le fait d'utiliser GridSearchCV sur l'imputer "transforme" les données de manière à obtenir un meilleur score?
Oui, l'optimisation de l'imputer KNN avec GridsearchCV transforme les données de maniere a obtenir un meilleur score (c'est la réponse a votre question finale).
Cependant, on travaille toujours en faisant l'hypothese que le score que l'on obtient est le score que la machine obtiendra dans la réalité (votre question d'avant) car on garde suffisamment de données de coté (avec un test set, et avec le principe de validation croisée)
@@MachineLearnia Merci !
Tout d'abord, bravo pour les qualités pédagogiques des vidéos. Question : peut-on se servir de knn_imputer avant d'utiliser knn_classifier? N'est ce pas une source de biais ? Merci par avance pour la réponse.
Oui c'est possible et ca n'est pas une source de probleme en théorie. Mais dans la pratique je ne le ferai pas, car KNNImputer est assez "risqué" et KNN_classifier n'est pas un algorithme tres performant.
Bonjour Guillaume! Je suis vraiment débutante dans ce domaine. Et peut être je vais poser une question débile. Je travaille sur un mini projet dont l'objectif est de prédir le time to event (casse) pour un réseau d'eau potable. Le problème est que les données en possession manquent beaucoup d'information (des casses non repotées (Date de casse)). Ma question c'est (au lieu de faire des recherches pendant des heures sur internet sachant que je comprends pas tout) : Est ce que dans ce cas est possible d'utiliser l'ANN pour générer des données (les variables pour chaque tuyau: matériau, date de pose, date de casse, collectivité) de manière intelligente? Je vous remercie d'avance
Bonjour Olfa, désolé pour ma réponse tardive (j'ai déménagé) Oui c'est possible de faire de l'augmentation de donnée avec des ANN : regarder sur Google pour trouver des tutoriels de GAN (ou bien directement sur le site de Tensroflow) Ca demande un peu d'expérience pour y arriver par contre. Et surtout voici un conseil tres important : Ne mettez surtout pas de données issues de votre GAN dans le test set !!! (le test set doit rester pur, et ne doit pas comprendre de données inventées, c'est tres dangeureux). Bon courage !
Merci pour ce vidéo extremement utile! vraiment merci. Est-ce que KnnImputer peut imputer les données qualitatives aussi bien que les données quantitatives? Si oui, est-ce que le principe c'est de compter la moyenne des valeurs pour les var quantitatives et le most frequent pour les var. qualitatives , bien sur uniquement pour les échantillons les plus semblables?
Est ce que KNN Imputer est l'amputation multiple? Ou c'est complètement différent?
Bonjour, je ne connais pas l'amputation multiple, mais c'est peut-etre que je la connais sous un autre nom. Donc je ne peux pas vraiment répondre a la question, navré
Merci
Bonjour. Existe-t-il une manière simple de procéder à de l'inputing sur une variable catégorielle? Merci! :)
Oui, vous pouvez mettre l'option de "mode"
@@MachineLearnia Merci beaucoup, j'avais entrevu cette option mais est-ce la seule?
Merci beaucoup pour tout, vos explications, votre pédagogie et votre savoir, moi qui suis débutant en ML et étudiant j'apprends beaucoup avec vous plus qu'ailleurs.
SVP, excusez moi encore mais je suis la série depuis le début et je me mêle les pinceaux un peu avec les méthodes:
fit,
transform,
fit_transform,
predict;
au début on utilisait que fit, puis est sont venu les deux autres et je ne fait plus la différence entre les trois, et surtout qui utilise les X et qui utilisent le target y ?
Merci infiniment.
Bon courage.
Bonjour et merci beaucoup.
En Machine Learning, il existe 2 types d'objets : des etimateurs (qui font des prédictions X-> y) et des transformeurs (qui transforment nos données X->X). Pour développer ces objets, il faut toujours utiliser une méthode fit().
Pour les estimateurs : fit(X, y)
Pour les transformateurs: fit(X)
Une fois entrainés, on peut utiliser ces objets :
pour faire des prédictions avec les estimateurs : predict(X)
pour transformer des données avec les transformers : transform(X)
Pour aller plus vite, on peut aussi utiliser des fonctions telle que fit_transform (mais si cela vous embrouille, vous pouvez l'oublier, elle n'est pas nécessaire)
@@MachineLearnia ahhh ok , waw c'est fou comme ça devient claire une fois dit comme ça ,
Merci beaucoup et bon courage.
Bien le bonsoir svp je voulais savoir si c'est possible d'appliquer tout ceci avec les données geophysiques
Tout dépend de vos données, mais en Data Science nous pouvons traiter presque tout type de données.
@@MachineLearnia merci bien mais je suis plus specialisé en gravimetrie et les données sont en 3 colonnes (longitude,latitude et anomalies) et je voulais ressortir une carte d'anomalie et plus faire des études statitisques mais mon soucis est comment m'y prendre stp aide moi le language python me passionne beaucoup
Bonjour Guillaume, vous faites un excellent boulot, je vous remercie. Une question, je voudrais savoir comment on peut bien parser les logs avec machine learning en classant les élément du fichier texte par date, heure, type, séparateur, adresse ip :port, Greedydata, .... ou bien les classer par famille proche ? Merci.
Bonjour et merci ! Je ne suis pas sur de comprendre la question a 100%. quand vous parlez de log, vous ne faites pas références a logarithme, mais a des enregistrements ?
@@MachineLearnia
oui je vais référence aux enregistrements. Par exemple sur cette ligne: 07/07/2020 10:23:12:234 [soum] 123:23:44 crs : >> sms
je veux faire le parsing c'est dire à chaque fois il rencontre les types.
07/07/2020 il les prend comme date
10:23:12:234 commet temps
comme word
[soum] comme word
123:23:44 comme data
crs comme word
: comme data
>> comme data
sms comme sms
En fait c'est pour me faciliter le parsing en regroupant par famille de mots ou type. merci
si les champs vide sont de type string que doit faire ??
Il faut d'abord remplir le vide avec un imputer ou bien une des fonction de Pandas, fillna, etc.
Bonjour monsieur, comment vous allez? J'espère bien.
Je travaille sur un projet de machine learning sur la prédiction de réussite en licence des étudiants orientés à l'université Norbert Zongo. C'est projet rentre dans le cadre en vue d'appliquer mes connaissances que j'ai acquis lors de votre formation sur UA-cam.
Je suis confronté à un problème de données parce que je veux utiliser des données réelles.
J'ai au total 5657 donnée mais au niveau de ma variable cible ( target ), les données manquantes sont au nombre de 2033.
La raison est que je ne dispose la liste de leur résultat de licence. En un mot, je ne sais pas si les 2033 étudiants ont réussi leurs licences ou pas.
Face à cette situation, quelle sont les approches que vous pouvez me proposer ?
Dans l'attente d'une réponse à ma situation, veuillez agréer l'expression de ma plus haute considération
Bonjour, est-ce que tu parles d'anonymisation des données dans une de tes vidéos ? Que faire quand on doit travailler avec un dataset contenant des noms, prénoms, numéros de téléphone contenus en vrac dans des morceaux de texte ? Je ne parle pas de tableurs csv avec des colonnes nom, prénoms, identifiants bien distincts. Ce serait trop facile de les enlever. Je parle bien de champs texte contenant par exemple, une note d'incident ou un commentaire utilisateur.
Bonjour, il faut encrypter les données, tout simplement. C'est une autre discipline dans laquelle je n'ai pas le meme niveau de compétence qu'en Machine learning, Mais on peut faire de l'encryptage basique assez facilement en remplaçant chaque lettre de l'alphabet par un caractère spécial (mais ce n'est pas efficace, n'importe qui peut cracker le code)
@@MachineLearnia c'est une des approches que j'ai pu voir en ligne, par contre, dans mes problèmes de classifications en NLP, je trouve ça très pratique d'utiliser un language model déjà entraîné sur wikitext-103 (transfer learning) avant de le fine tuner avec mon corpus de textes cibles et d'enfin recycler l'encodeur dans un nouveau classfier. Dans ce cas, j'imagine qu'il faudrait que j'extraie le fichier de vocabulaire du premier language model pour le coder de la même manière (c'est plus un codage qu'un chiffrement, d'ailleurs). Ça te semble faisable ? Orthodoxe ? Sans perte d'accuracy ?
Pour le risque de craquer le code, si je ne code pas chaque lettre mais chaque mot en codant le fichier de vocabulaire qui est créé lors de la "numericalization" (dictionnaire qui a chaque indice entier associe un mot), je pense que j'évite le risque de l'attaque statistique qui tient compte de la probabilité distribuée de l'apparition de chaque lettre dans une phrase dans une langue donnée. Corrige-moi si je me trompe.
Oui je vois l'idée et ca me semble faisable. Le mieux est de tester l'idée pour mesurer les résultats. Il est important de rappeler que le Machine Learning est un domaine d'étude tres expérimental : On préfère tester des idées et mesurer leur performance plutôt que de méditer longtemps sur la faisabilité d'un projet.
Bonjour Guillaume, désolé si ma question ne n'est pas en rapport avec cette vidéo; je tiens d'abord à
vous félicitez pour votre livre qui donne les informations sur la data science , Bravo!
je veux savoir si vous avez fais une vidéo formation sur la création de fichier python exécutable
sous MacOs avec l'environnement anaconda, si oui donnez moi le lien de la vidéo ?
svp si c'est n'est pas le cas, il serait vraiment chouette d'en faire une. Merci!
Merci beaucoup, non je n'ai pas encore fait une telle vidéo, je le rajoute sur ma liste des choses a faire :)
Merci pour la vidéo ! Mais du coup avec la première méthode de remplacer les valeurs manquantes par la moyenne...ceci ne risque pas d'augmenter encore plus la "moyenne" bref en un mot ....c est pas dangereux comme technique ? ( après je suppose que ça dépend du nombre de valeur manquantes....)
Ps il y a t il une vidéo qui parle spécifiquement du nettoyage ?
Une règle d'or a respecter : ne pas imputer des données lorsque plus de 50% des données sont manquantes. Non je n'ai pas encore faire des vidéos sur ce sujet en particulier mais ca ne saurait tarder.
À quand Le ivre sera disponible ?
Bonjour, je n'ai pas encore de date de prévu, il faut que je repense ce projet.
l'imputer comment il fait réellement la différence entre X et X_test pour qu’il puisse remplacer les "nan" dans X_test par les moyennes trouvées dans X?
Sinon Merci pour cette formation :)
Il garde en mémoire la valeur moyenne de X_train et l'applique au X_test.
data.dtypes
Dst Port object
Protocol object
Timestamp object
Flow Duration object
Tot Fwd Pkts object
...
Idle Mean object
Idle Std object
Idle Max object
Idle Min object
Label object
Length: 80, dtype: object
come j-'ai tape a command sauivant data = data.astype(float).apply(pd.to_numeric)
ValueError: could not convert string to float
help