bonjour et bienvenue dans cette 28ème vidéo de la série python spécial machine learning aujourd'hui nous allons continuer notre analyse du dataset du coronavirus en faisant ensemble le pré traitement des données ce qu'on appelle en anglais le prix processing on dit souvent que cette étape est la plus longue et la plus difficile dans le travail d'un datacenter istres mais dans cette vidéo je vais vous présenter une approche simple rapide et efficace qui va vous permettre de faire du très bon prix processing sur n'importe quelle date à 7 et sans vous prendre la tête vous êtes prêts
c'est parti alors pour rappel le prix processing c'est l'étape qui consiste à préparer nos données avant de les fournir à la machine pour son apprentissage le but est à la fois de mettre nos données dans un format propice au développement de modèles de machine learning mais également d'avoir le dat ass est le plus propre possible afin d'améliorer la performance de notre modèle pour ça il existe une tonne d'opérations possibles on peut encoder nos données les normaliser nettoyer les valeurs manquantes nettoyer les valeurs aberrantes sélectionner les meilleurs variable créer de nouvelles variables extraire certaines caractéristiques bref
il existe beaucoup d'opérations possibles et au milieu de tout ça bah il est très facile de se perdre c'est pourquoi dans cette vidéo je vais vous présenter une approche qui est à la fois très simple à suivre est très efficace cette démarche consiste à mettre de côté toutes les opérations un peu avancé comme la sélection de variables ou l'extraction de caractéristiques pour se concentrer uniquement sur le strict minimum à savoir les opérations qui vont nous permettre de remplir l'objectif 1 mètre les données dans un format propice aux machineries ça veut dire quoi ça veut dire
qu'on va se contenter de faire trois choses créer 1 37 et 1 tasse est encodé nos variable et nettoyer les valeurs manquantes voilà c'est tout basta ensuite avant même de commencer à faire de la sélection de variables de la normalisation ou de la génération de polinum on va créer un premier modèle de machine learning aussi simple soit il on va créer un modèle de machine learning on va l'évaluer et on va en faire le diagnostic à partir de là on va pouvoir tenter d'améliorer la performance de notre modèle avec les différentes opérations de prix processing
que j'ai mentionnés par exemple si le modèle est en over fitting alors on va essayer de faire de la sélection de variables pour améliorer la performance du ce modèle autrement dit la démarche de travail que je vous conseille de suivre est extrêmement pragmatique on commence par faire le strict minimum à savoir très un test encodage et élimination des valeurs manquantes on développe un modèle extrêmement basique par exemple un arbre de décision et à partir de là on est dans une boucle itérative dans laquelle on part d'une idée on l'implémenter et on les venues y des
codes évaluation idée code évaluation et en faisant ça pas à pas eh bien on arrive à avoir un code assez robuste deux prix processing bon je pense que vous avez bien compris l'idée donc maintenant on passe à la pratique donc suite à la dernière vidéo on avait effectué un certain nombre de modifications sur notre data frame df mais rappelez-vous ce data film n'était que la copie du data frame originel celui qui stockaient réellement nos données le data frame d'haïti avec lequel on avait chargé ne donnez donc en général quand on a fini de faire l'exploration
de nos données sur cette copie avec laquelle on a pu jouer un petit peu exploré et bien ce qu'on fait c'est qu'on refait une copie du data frime delta comme ça on peut repartir sur des bases pur solide donc c'est parti pour la suite de notre projet ont recréé une copie de notre data frame d'état en général on lui donne un autre nom comme ça le data frame qui a servi au prix processing est toujours disponible et on peut continuer à observer certaines choses dessus mais bon pour cette vidéo on va tout simplement gardé le
nom d f ça simplifie un petit peu les choses donc à l'heure actuelle ce data frame est exactement comme celui qu'on avait au tout début de la vidéo 27 c'est à dire qui contient 111 colonnes beaucoup de cologny inutiles comme la colonne passion dis donc ce qu'on va commencer par faire ces deux sélectionnés d'office les variables qu'on avait pu identifier comme réellement utile dans la vidéo 27 la vidéo précédente concrètement ça veut dire qu'on va recréer les sous-ensembles qu'on avait pu identifier donc en utilisant par exemple une variable missing rights qui nous donne les différents
taux de valeurs manquantes pour chaque variable à partir de laquelle on va tout simplement copier coller le code qu'on avait pu écrire la dernière fois donc pour filtrer les colonnes de type sang et les colonnes de type rural et on va également créer une liste de colonne importantes qui sont l'âge et bien sûr notre target grâce à ces trois sous-ensembles eh bien on va filtrer notre data frame df en disant qu edf est égale à la liste qui colle sommes plus blood que l'homme plus viral collins ce qui nous donne le résultat suivre autrement dit
on se retrouve avec les 33 colonnes qu'on avait identifiées la dernière fois que l'on a c'est utile et on repart sur des bases saines sur laquelle on va maintenant pouvoir faire le prix processing donc pour commencer on va importer depuis le module modèle sélection de ces kits landes la fonction traint est split cette fonction va nous être utile pour créer un trend 7 est un test 7 donc on écrit ces deux choses avec trent esprit dans lequel on fait passer des f puis on va faire passer un test saiz qui va peut-être être égale à
10 on 02 parce qu'on a quand même pas mal de données donc je pense que 20% dans le texte fait c'est pas mal 20% de 5000 signes a pas mal et on va fixer notre aléatoire avec random state égal zéro donc là vous êtes peut-être en train de découvrir la fonction trend tech split sous un nouvel angle parce qu'en général on y fait passer un x et on y est on écrit x 13 x tests y traînent y 13 mai la fonction trenta split on peut aussi s'en servir pour découper tout simplement en deux un
data frame df en 1 37 et 1 tasse est de façon complètement aléatoire avec un random state est un test size que l'on définit et bien sûr si vous voulez pas avoir d'erreur n'oubliez pas de mettre un petit underscore que j'ai oublié ici donc à ce stade on va voir à quoi ressemble notre 37 et notre test est en fait ce qui nous intéresse c'est plutôt là variable clé donc on va vérifier le nom de valeurs que l'on a eus aléatoirement dans les deux dans les deux parties donc on fait 37 points value cowes et
on va voir qu'on obtient donc dans notre 37 4000 cas négatifs et 400 cas positifs donc ça correspond bien à 10% et si on fait la même chose pour notre test est très important de vérifier ça juste pour être sûr que en guerre des bonnes proportions alors on voit que dans notre tête on aura mille valeurs négatives et milka positive bien maintenant qu'on a créé 1 37 et 1 t cette offre pourra passer au nettoyage bien sûr le t7 on le met de côté et on y touche jamais on n'a pas le droit de voir
ce qu'il ya dedans on n'a pas le droit de le manipuler à notre avantage non il reste deux côtés et ce sont nos données futur donc passons à l'encodage durant l'analyse de la dernière vidéo on a pu voir en examinant les variables qualitative c'est à dire toutes les variables de type object qu'on avait en fait quatre grandes catégories la catégorie négative positive et dit acted note dite acted donc pour effectuer d'entre eux codage on va commencer par créer un dictionnaire qui va relier les catégories positive négative à des nombres 0,1 et c'est qu'on va créer
un dictionnaire positive associé à en général positives c'est un négative c'est zéro detected c'est un et qu'on avait également un homme sain dit acted qui va donc être associé à 0 maintenant avec ce dictionnaire on va utiliser la fonction map deux pandas pour appliquer cette fonction à toutes les colonnes que l'on va rencontrer toutes les colonnes de type object donc on écrit une boucle fort colom in df points select dit à ips toutes les colonnes donc de type object qu'est ce qu'on va faire avec ça eh bien on va dire que des f de cette
colonne est égal à df de la colonne points map code donc on va appliquer cette fonction ou ce dictionnaire à tous les éléments de chaque colonne que l'on rencontre dans les colonnes du zip object en exécutant ce code il est possible qu'on ait un petit message d'avertissement ne vous en faites pas c'est juste c'est juste une petite une petite note à notre rotation qui nous dit ah il vaut mieux utiliser points block etc vous en faites pas à ce stade donc si on observe des f on va voir que toutes les variables qualitatives sont remplacés
c'est super donc si on fait des f point dit hype point value car voilà on voit que il n'ya plus de variables de type object dans notre data cet encodage terminé maintenant pour faire les choses proprement on va copier coller dans une fonction encodage ce qui va nous permettre par la suite de traiter aussi bien notre 37 et notre thèse 7 avec cette fonction ça va être beaucoup plus rapide donc maintenant de la même manière on va donc créer une fonction imputation pour éliminer nos variable manquantes dans laquelle on va faire passer un data frime
que ça soit le train n 7 ou le t7 et dans cette fonction ce qu'on va faire pour le moment la chose la plus simple qui puisse y avoir c'est de simplement retourner drop un oeil va écrire df points drop neiges sur l' axe 0 aussi simple que ça on compile une autre fonction et pour finir on va donc créer une fonction prix processing dans laquelle on va dire qu edf est égal à encodage d'edf donc on va faire le l'encodage ensuite on va dire qu edf est égal à imputation d'edf on va faire l'imputation
et on va finir cette fonction en créant le xe et le y dont on a besoin pour faire du prix processing donc on a ra à la fois le x trail lorsqu on le fera passer le trance est ici et le hic ce test lorsqu'on fera passer le test 7 dans cette fonction donc on va faire quoi en faire on va dire que x est égal à df points drop de la colonne sarr skov 2 en précisant donc que c'est sur la kz1 qu'on veut éliminer sarr ce kof de résulte donc toute la colonne et
on va dire que y c'est égal adf dossard skov de résulte pour finir on retourne x et y et voilà on a notre fonction de prix processing qui est complété à présent on va donc faire passer notre 37 et notre tasse est dans cette fonction on écrit donc que x trail et y règne est égal à prix processing de du trend 7 comme ceux ci et on a le même message que tout à l'heure qui nous indique point locke et c'est ce qu'on pourrait faire d'ailleurs ça serait d'imprimer un petit rapport nous indiquant la taille
de y enfin la taille le nombre de cas positifs et négatifs que l'on retrouve dans y après avoir effectué une imputation puisqu'il sera nécessairement différent des valeurs qu'on avait ici donc ce qu'on fait c'est qu'on écrit y point de value car ns et donc on voit que dans notre 37 on aura 258 cas négatifs et 38 cas positifs pour entraîner notre data notre modèle et si on observe çà sur le t7 qu'on aura 50 cas négatifs et 12 cas positifs pour évaluer notre modèle donc ça y est à ce stade on a fait la version
la plus simple la plus basique possible de notre prix processing la nôtre dataset est prêt on peut entraîner un modèle donc c'est ce qu'on va faire on va créer un modèle moins ce que j'aime bien faire en général c'est de créer un arbre de décision parce que ce sont les modèles extrêmement rapide et extrêmement facile à comprendre donc ça va être très utile pour diagnostiquer le modèle comprendre quels sont les variables pourtant tu es ce genre de choses donc on entre ici dans la partie modélisation dans laquelle je vais importés depuis le module tri de
ces kits l'orne l'estiment à tort des six jeunes street lascif ailleurs avec ça je crée donc un modèle d'arbres de décision dans lequel je vais immédiatement fixé le générateur aléatoire sur 0 ça c'est très important pour avoir une répétabilité dans nos résultats et ainsi évaluer les différentes décisions pour apprendre les idées qu'on va avoir dans ce cycle itératif que je vous ai présenté de façon cohérente on est sûr à chaque fois que les idées seront évalués de la même manière et puisqu'on parle d'évaluation il est maintenant temps de créer une procédure d'évaluation qui soient robustes
claire et informative dans cette procédure on va utiliser la métrique f1 parce que c'est une très bonne maîtrise pour bien pour avoir un bon aperçu entre le rapport de la précision et de la sensibilité ou bien la précision et le recall comme on appelle ça en anglais donc comme je vous l'avais expliqué dans la vidéo 26 la précision et le recall ce sont des métriques qui nous permettent de mesurer les proportions d'erreur de type 1 et d'erreurs de type 2 dans notre data 7 c'est à dire les proportions de faux positifs et de faux négatifs
que notre modèle effectue donc depuis s'acquitte l'orne point metrix on va importer le score est fin et on va également importés je pense et on va également importer des matrices de confusion pour voir ces rapports entre faux positifs et faux négatifs dont je vous ai parlé et ça c'est une petite astuce on va importer un rapport de classification ça c'est un super outil qui va nous faire un bilan de dû bricoler de la précision du score est fin et même de l'exactitude vous savez ce qu'on appelle accrue si enfin bref vous allez voir ce truc
est vraiment très très cool ensuite on va également importer depuis le module modèle sélection la fonction learning curve 2,5 et l'orne parce que ça ça va nous être utile pour comprendre si notre modèle est en over footing ou bien en dehors fitting et à partir de là on va pouvoir prendre des décisions et se dire tiens on va peut-être essayer de faire de la sélection de variables ou bien on va peut-être essayer de créer des polynômes et ce genre de choses ça c'est ce qui va nous être utile vraiment pour prendre ce genre de décision
donc à partir de là on va donc créer une fonction évaluation dans laquelle on veut faire passer notre modèle dans cette fonction on va commencer par entraîner le modèle sur les données x trail y règne ensuite on va calculer les prédictions de notre modèle sur le test 7 et on va afficher à l'écran notre matrice de confusion entre y teste et nos prédictions est ce qu'on va faire c'est qu'on va également affiché à l'écran notre classification report entre higgs entre y teste et nos prédictions voyons voir déjà si notre code fonctionne avec ceux ci donc
si on fait évaluation de notre modèle oui il n'y a pas d'erreur sur 54 cas négatifs dans notre test 7 on a pu identifier correctement 52 personnes en leur disant vous n'avez pas vous n'êtes pas positif voilà vous êtes négatif et on a fait deux erreurs donc deux personnes qui étaient censés être négative on a dit ça on va vous mettre à l'hôpital parce qu'ils semblent ans avec vous et vous soyez contaminés ça nous donne donc une précision de 84% et agricole 2 96% pour les gens négatifs et nous ce qui nous intéresse plus ce
sont les cas positifs donc les cas y est égal à 1 et je vous rappelle qu'il y avait douze cas c'est ce qu'on avait pu voir ici donc y teste compte douze cas positifs c'est ce qu'on retrouve ici et bien là on peut voir que donc on a correctement identifié deux cas positifs avec notre modèle et on a un correctement rejetée dix personnes donc parmi les douze individus qui étaient porteurs enfin en tout cas qui sont normalement positif au virus d'après le data 7 on appuie en identifié seulement 2 ce qui nous donne un recall
de 17% en gros ça veut dire que on a seulement identifié 17 % des cas positifs au coronavirus avec ce modèle de machine hors n'est pas terrible vraiment pas terrible mais c'est qu'un premier modèle on la crée en quelques minutes à peine on n'a fait aucun prix processing si ce n'est les opérations de base et maintenant on va rajouter dans cette fonction d'évaluation des learning curve pour comprendre si notre modèle et ander footing ou en over fitting donc si vous avez besoin d'un petit rappel sur les learning curve on avait vu ça dans la vidéo
21 sur 30 pour les utiliser il faut donc créer trois variables une variable n une variable traîne score est une variable valls corde pour notre score de validation ces variables sont donc le résultat de notre fonction learning curve qui utilisent la validation croiser la crosse validation pour entraîner et évaluer notre modèle défini ici sur plusieurs split de notre data 7 donc on indique que la variable modèle qui est ici doit être entraînée sur le x trail et le y sera avec une crosse validation par exemple égal à 4 en découpant le trait inside allant de
0,1 par exemple 0 1 à 1 donc pour s'ancrer on peut faire ce pourcentage avec lynne spears de nîmes paille dans lequel on va dire que céline space de 0,1 à 1 en prenant par exemple 10 des coupes et pour finir dans tout ça on va rajouter un score digne qui va être égal au score f puisque comme je vous le disais le score f1 c'est un très bon rapport entre la précision et leur école et ça nous permet de comprendre si notre modèle arrive à la fois à bien identifier les cas positifs et bien
identifier les cas négatifs donc une fois qu'on a calculé les différents scores avec cette learning curve qui vont donc être dans le trend score et le validation score ce qu'il faut faire c'est visualiser tout ça dans un graphique mac belote libre donc on va commencer par créer une figure ensuite on va afficher avec une courbe pelote l'évolution du train' score en fonction de haine c'est à dire en fonction du nombre d'échantillons qui ont servi pour l'entraînement du modèle donc pour ça on fait très in score point mine puisque faut il faut prendre la moyenne de
tous les résultats pour une crosse validation donc la moyenne sur la kz1 alors ça si vous voulez comprendre pourquoi il faut un petit peu examiner les shape de votre crâne score est également revoir la vidéo 21 sur 30 que j'avais que j'avais fait sur la sélection de modèles et on va copier cette ligne et la coller en dessous pour faire exactement la même chose sur le val score est à présent si on exécute cette cellule est con regza cuts notre code voilà on obtient les courbes d'apprentissage pour notre modèle en cours et là on peut
commencer à faire le diagnostic de notre modèle donc là que voit-on eh bien on voit tout de suite que notre modèle et en over fitting pourquoi et bien parce que le modèle à un score de 100% sur les données du 37 donc il a parfaitement appris sa leçon il est ok sur le 30 sept par contre il est incapable de généraliser sur de nouveaux cas quand on lui montre des données du validation score du validation 7 donc des données qui n'a pas vu durant son entraînement eh bien on obtient pour la une performance f1 je
vous rappelle que c'est le score f1 qui est observé ici eh bien on obtient une performance beaucoup moins bonnes voilà au mieux on n'obtient 50% ce qui est déjà très bon mais ce grand écart nous indique que le modèle et en over fitting à partir de là on peut donc essayé de modifier notre data 7 pour lutter contre cette over fitting par exemple on peut commencer par fournir plus de données à la machine c'est en général quelque chose qui fonctionne très bien contre lover fitting de plus ici on dirait qu'on est en train de monter
progressivement plus on a de donner plus le score sur le validation augmente donc allons-y au lieu d'utiliser un drop nm ce qui nous donne vraiment très peu de données sur l'apprentissage et le test eh bien on va modifier cette fonction imputation avec autre chose et c'est là qu'on commence à faire du prix processing de façon intelligente c'est la démarche dont je vous parlais on commence avec le prix processing le plus basique possible et on teste des idées au fur et à mesure pour améliorer la performance du modèle c'est comme ça qu'on fait du prix processing
donc à la place d'utiliser drop un oeil ce qu'on pourrait faire ce serait d'utiliser un fils un oeil donc de remplir toutes les valeurs manquantes de notre data 7 toutes ces données là avec une valeur extrêmement par exemple 1 - 999 donc là on voit tout de suite qu'on n'obtient pas tout les toutes les données aucune donnée n'a été éliminé donc on a beaucoup plus de valeur et si on entre à notre arbre de décision là dessus donc on ne change rien de toutes ses cellules tout ce qu'on fait c'est qu'on ferait exécuter notre évaluation
est bien là on voit que le score est nettement moins bon le score est net moins bon déjà pour commencer on avait tout à l'heure un trend score à 100% et maintenant ils diminuent il est plus qu'à 30% c'est très mauvais et pour le valider ce score c'est encore pire donc on n'a même pas besoin de regarder notre matrice de confusion tout le reste on sait d'office que c'est pas une bonne chose donc avoir d avoir plus de données pourraient nous aider c'est indéniable mais on ne peut pas faire ça en se contentant d'un fils
aîné - 999 ça ça marche pas alors à ce stade on pourrait tenter autre chose on pourrait se dire qu'on laisse le fils aîné mais qu'on rajoute une variable qui nous indiquent la présence de valeurs manquantes vous vous rappelez de missing in dique sort de ces kits l'orne qu'on avait vu dans la vidéo sur les buteurs eh bien c'est exactement ça alors bien sûr c'est pas dit que ça marche c'est se trouve ça va pas marcher mais on a une formule ici qui nous permet d'évaluer nos idées à l'enzyme générons des idées mais tellement mettons
ces idées en place et évaluons les c'est aussi simple que ça donc c'est parti dans notre fonction imputation en même temps que l'on impute nous donner ce qu'on pourrait faire ça serait de créer par exemple une variable is neiges qui est égale à une de nos variable par exemple cette variable au hasard puisque ça a l'air d'être une variable dans laquelle il manque des données dont on fait donc on va prendre cette variable et on va dire si en effet c'est une variable manquantes mais il n'ya pas que ce genre de variables qui nous donnent
des données manquantes il ya également les variables deux types sans donc va par exemple prendre leucocytes avec cette variable qui est également is and day est ce qu'on va faire c'est qu'on va essayer d'utiliser un or donc si l'un ou l'autre est manquant alors on va indiquer que is un oeil voilà on va mettre un trou dont ilan et je suis pas sûr que ça fonctionne avec un or mais on va tester on va voir si ça ne retourne pas d'erreur et apparemment ça nous retourne une erreur oui avec le n 10 ou le hall
le or ne fonctionne pas donc ce qu'on va faire c'est qu'on va utiliser le ou classique celui qu'on utilise normalement ans et on sait plus plus ce genre de langage est donc cette fois ci ça a bien fonctionné on réévalue notre modèle et non clairement alors ça un peu mieux fonctionné mais non c'est toujours pas ça donc clairement le fils aîné y voit là on le voit ça ça nous donne pas des bons résultats donc clairement le fils aîné même couplée à une histoire de missing indicators ça ne fonctionne pas donc on va laisser tomber
cette idée à présent on va explorer un autre timidité qui peut nous permettre de lutter contre lover footing et cette idée c'est la sélection de variable donc pour commencer on va enlever nos deux idées de filena on va redire qu edf est égal à tf2 drop un oeil sur l' axe 0 on va recréer notre 37 notre recette et on va ré entraîner notre modèle est à partir de ce modèle on va utiliser la tribu fincher immportant ce qui nous dit qu'elles sont les variables les plus importantes dans la découpe de l'arbre de décision regardez
je vous montre tout de suite on écrit modèle points fincher importance ça nous retourne un tableau un tableau un petit peu difficile à lire donc ce qu'on va faire c'est que ce tableau on va l'injecter dans un data frame panda dans lequel pour chaque valeur on aura la colonne associés donc on écrit p des points da sa frime avec ses valeurs et en index on va prendre les colonnes de notre 37 donc on fait un x frame qui en date a frame panda également donc on peut écrire x trail ne pointent qu'au l'oms et ça
nous donne le tableau suivant très intéressant est ce qu'on va faire maintenant encore mieux c'est qu'on va visionner ce tableau avec un graphique barre donc on fait point pelote point barre bîmes on se retrouve avec un graphique qui nous montre où sont les variables les plus importantes pour notre arbre de décision pour le faire un peu plus grands on n'hésite pas à mettre un fixe eyes avec par exemple 12,8 donc c'est un petit peu plus lisible et là on se rend compte de quelque chose de très intéressant c'est que pour notre modèle ce sont les
variables de type sans les plus importantes et se sont pas vraiment les variables de virus mais en fin de compte c'est pas si surprenant parce que quand on avait fait l'analyse target variable dans la vidéo précédente target blood on avait vu que par exemple les plates let a été clairement significatif d'une différence entre les cas positifs et les cas négatifs et de la même manière pour par exemple les leucocytes et qu'est ce qu'on observe ici et bien que les leucocytes exposé complètement le plafond voilà les plates l'être également ensuite on ice blood cells et le
reste voilà ces intermédiaires mais tout le tout les toutes les données liées au virus ça l'est pas tellement donc à partir de ce graphique on peut faire deux choses la première c'est de définir un seuil un flash aude en dessous duquel les variables ne sont pas sélectionnés par exemple on pourrait choisir un seuil légal à 0,01 et toutes les variables qui sont en dessous de ce seuil c'est à dire en dessous de la houle il a souri toutes ces variables elles partent à la poubelle ça c'est une première possibilité maintenant une autre possibilité c'est de
se rendre compte que en fait la majorité des variables qui n'ont aucune importance sont les données virale donc pourquoi est ce qu on supprimerait tout simplement pas ces données ça pourrait être intéressant et ça pourrait être d'autant plus intéressante que lorsqu on revisite le graphique des valeurs manquantes qu'on avait tracé dans la dernière vidéo on s'était rendu compte que entre les données de type sont et les données de type virus ou maladie les valeurs manquantes ne sont pas très bien alignés donc si on fait un drop et n'a surtout le dataset on perd énormément de
valeur en revanche si on fait un drop et n'est uniquement sur les variables de type sens puisque on s'occupe pas des variables de type viral peut-être qu'on aura plus de données avec lesquels travailler et qui dit plus de données dit une potentielle augmentation de notre validation score donc c'est parti on va tester ces différentes idées en commençant par exemple par éliminer toutes les variables de type viral donc ce qu'on pourrait faire ça ce serait revenir au tout début là où on avait fait la création des sous-ensembles au début de notre analyse et d'enlever momentanément le
sous-ensemble virale columns on se retrouve donc avec kiko logs belote colom on recrée notre data flames ont recréé 1 37 et 1 thess est donc en découpe aléatoirement mais toujours en gardant le même l'andam states est très important pour la reproductibilité je crois qu'on dit comme ça en français et donc si on exécute notre prix processing déjà voyons ce qui se passe sur les données disponibles et bien on voit qu'on a plus de données pourquoi parce que au moment de faire le drop un oeil on a fait ce drop et n'est uniquement avec les données
de sang c'est à dire que toutes les variables qu'on a ici n'ont pas joué de rôle lors de l'élimination des variables ce sont seulement ces variables là et donc à partir de ce train 7 et de ce test 7 qui est juste en dessous si on rit on traîne notre modèle est bien on se rend compte que ça on n'a pas réussi à améliorer la situation on a toujours un problème dover fitting qu'il faut résoudre mais ne perdez pas espoir parce qu'on est sur le chemin de la réussite on teste simplement les idées les unes
après les autres donc l'idée suivante c'est d'utiliser un modèle régularisés ou un modèle qui luttent contre lover fitting est un très bon exemple c'est la random forest donc au lieu d'utiliser un arbre de décision on pourrait immédiatement utilisé depuis le module ensemble de ces kits landes le classique fire random forrest on va donc remplacer sa part une rando mme forest à ce stade on n'est pas en train de régler les paramètres de nos modèles ça on le fera dans la prochaine vidéo là on essaye de régler notre data 7 pour qu'ils nous donnent de bons
résultats sur un modèle on va dire un modèle bidon façon de parler donc on revient tout en haut on remet les données virales dans notre data sept ont ré entraîne notre modèle cette fois-ci d'ailleurs c'est le modèle de random forest et on rejette un petit coup d'oeil à notre graphique l'autre idée qu'on avait donc c'était 2 définir un seuil de fraîcheur mais maintenant que je regarde ce graphique je me rappel de quelque chose quelque chose qu'on avait vu dans la dernière vidéo c'était que lorsqu'on avait créé une variable est malade qui considérait si n'importe quel
patient était malade ou testés positifs parmi les autres maladies on voyait qu'on avait certaines différences assez significatif dans les tests sanguins par exemple sur les lymphocytes choses que l'on ne détectait pas forcément sur les gens atteints du coronavirus donc il serait possible que en créant une variable est malade comme ce qu'on avait pu faire dans l'exploration de données on atteigne de meilleures performances sur notre modèle de machine learning c'était ça l'intérêt de faire l'exploration nous donner et testé différentes idées donc dans notre chaîne de prix processing on va rajouter une fonction une fonction qu'on va
appeler fischer engineering puisque c'est comme ça que ça s'appelle ça s'appelle créer des variables à partir des variables déjà existantes dans laquelle donc on va dire que ont créé une variable d f est malade encore une fois ça veut pas dire que le patient est réellement malade ça veut juste dire que l'individu est testé positif à une autre maladie mais bon pour simplifier les choses vont dire est malade et donc des f est malade c'est égal à des f2 virol columns donc toutes les colonnes dans lesquelles il ya un virus dont on fait la somme
sur la kz1 et dont on avait les filles si la somme est supérieure ou égale à 1 1 il suffit que la personne ait au moins une maladie voilà donc une fois qu'on a créé ça ce qu'on fait c'est qu'on return df et du coup ce qu'on pourrait faire c'est en même temps éliminer toutes les variables virale à l'exception de cette variable est malade puisqu'on a juste l'information que une personne a été contaminé donc toutes ces variables qui pour l'arbre de décision où la forêt de décision n'a pas vraiment d'importance non pas vraiment d'importance toutes
ces variables sont quand même combiner en une seule variable en tout cas l'information clé donc on va dire qu edf est égal à df - drop de toutes les colonnes virale colom en précisant relaxe donc accès égal 1 ensuite cette fonction fitch engineering ont valeur ajoutée avant l'imputation évidemment on exécute ça on refait notre prix processing donc on a à nouveau plus de variables dans notre train 7 et dans notre test est évidemment on évalue notre modèle et on constate que non la performance ne s'améliore toujours pas on est sur une pente ascendante mais elle
est moins bonne que ce qu'on avait au tout début avec notre âme de décision sur un sur un data c'est tout petit cependant ne perdait pas espoir on est sur la bonne voie on teste simplement des idées et c'est normal de paille arrivée du premier coup et c'est même un bon signe maintenant en jetant un coup d'oeil à notre graphique on se rend compte que oui il ya toujours énormément de variables qui ne joue pas une très bonne apporte une très grande importance il y en a beaucoup qui sont en dessous des bras des 5%
donc bon on pourrait tenter de définir un seuil avec par exemple le selector select from moodle qu'on avait vu dans la vidéo 23 sur 30 sur la sélection de variables mais est-ce qu'on pourrait aussi faire ça serait d'utiliser le selector select key beast qui utilise un test statistique pour faire sa sélection par exemple on pourrait essayer un test de à nova ça pourrait être pas mal donc pour ça dans notre parti modélisation on va créer une 'pipeline' ça va nous permettre de faire ce select key west en étant cohérent entre le train 7 et le
13 sept donc on va commencer par remporter depuis celle qui plante point 'pipeline' la fonction mail 'pipeline' ensuite on va aussi importer depuis sa qu'hitler ne point fitch sélectionne la classe enfin le transformer qui s'appelle donc select km est comme ceci à partir de là notre modèle on va le transformer en modèle de pipe lines dans lequel on va commencer par faire un select gabe est dans le cade comme je vous disais on va utiliser un test de à nova le test de à nova on le trouve dans fischer sélection en tant que f classe
if donc on va baser notre cahier best sur f classe ifs en bar exemple choisissant un nombre de fisher a sélectionné égal ak haga égale à 10 donc on va prendre les dix meilleurs variable celles qui ont les liens les plus forts en test de à nova entre notre target hainaut variable x-trail on a défini notre modèle est ce qu'on va faire c'est qu'on va évaluer ce modèle cette fois ci on croise les doigts et là on commence à faire des progrès parce que certes notre ricol est toujours assez faibles leur école sur la classe
1 nous dit que seulement 30% des gens qui sont positifs ont été détectés en dix ans en tant que positif donc ça reste peu ça fait cinq personnes parmi 16 c'est pas terrible mais là on voit qu'on est sur une courbe ascendante encore une fois c'est pas mal peut-être qu'il faudrait jouer avec deux trois variables de trois valeurs de cas c'est ce qu'on va faire tout de suite on dirait qu'il nous faut encore moins deux variables donc vont essayer avec 5 ça paraît surprenant mais on va essayer littéralement puisque c'est le principe du machine learning
essayé essayé essayé et hu est clairement là on commence à avoir des bons résultats c'est curieux mais avec simplement on est parti d'un data c'est dans lequel y avait cent onze variable et là on travaille simplement avec cinq variables pourtant on arrive à faire 44% de bonnes réponses alors certes c'est simplement sur seize individus ça nous permet pas de faire une bonne estimation générale de la performance à l'avenir mais c'est déjà pas mal c'est déjà pas mal d'avoir un recul de 44% un score f1 qui ça y est atteint les 50% c'est déjà bien ça
et on voit que là ça monte ça monte donc on va continuer on va on va encore divisée par deux alors si on divise par 2 je pense pas que ça va nous amener très loin mais on y va on divise par deux c'est aussi une technique ça a toujours divisé par deux et puis si ça tant que ça diminue vous diviser par deux si maintenant voilà là là on n'est pas bon donc on va ré augmenter donc deux fishers c'est clairement pas suffisant d'ailleurs on voit que notre modèle là commencent à souffrir sur le
train n 7 donc on va passer à trois variables et ça nous donne ouais ça nous donne quelque chose de moins bon qu'avec les 5 donc on va continuer on va passer à 4 alors pour aller plus vite on pourrait écrire une boucle fort mais ici je le fais pas je fais juste ça manuellement voilà quatre cadres ça augmente 4 ça augmente même beaucoup on voit où on atteint presque les attendait on atteint presque les 60% de f2 score f1 sur le validation score ça c'est beaucoup franchement ça c'est beaucoup du coup on va revenir
à 5 ou 4 ce genre de choses et pour finir ce qu'on pourrait tenter de faire ça c'est une technique assez à ses ultimes on va dire non c'est pas une technique ultime mais c'est une technique qui fonctionne assez bien c'est de faire une expansion polynomiale utiliser polynomiale fishers pour créer plein de variables suivi d'un pays si haye ou d'un select kaib est par exemple on peut tenter de faire un polynôme et afficheurs avec un degré égale à 2 ce qui va avoir pour effet d'élever chaque variable au carré est de multiplier également chaque variable
avec ses différentes voisinant ensuite pour filtrer tout ça on va garder simplement les dix meilleurs variable celles qui ont le score à nova le plus élevé et si on entraîne ce modèle alors on voit qu'on est vraiment sur la bonne piste ce qu'il est ce à dire que en intégrant tout ça dans une autre boucle de prix processing et en optimisant tout ça dans la prochaine vidéo avec un grid search & v alors on devrait obtenir de bons résultats donc voilà pour conclure avec cette vidéo ce que je voulais vous montrer c'était une démarche de
travail dans laquelle on peut tester nos différentes idées de prix processing alors vous pourriez vous dire ouais mais on n'a pas fait grand chose on n'a pas fait d'extraction de caractéristiques on n'a pas fait normalisation alors oui par exemple la normalisation on ne l'a pas fait pourquoi parce que ce stade ce n'était pas nécessaire vu qu ont développé des modèles basés sur des arbres et les arbres ne nécessite pas de faire de normalisation mais ce que vous aurez remarqué sans doute c'est que le travail qu'on a fait a été guidé par des justifications à aucun
moment on a commencé à écrire un pavé de prix processing en fait nos fonctions de prix processing ont été très petit on a juste fait un peu d'encodage très basique un peu de friture engineering très basique qui était basé sur ce qu'on avait pu découvrir dans la dernière vidéo une imputation assez basique mais dans laquelle on a testé différentes idées et chaque idée a été comme je viens de le dire testé on a justifié l'idée de base en se disant tiens on a un problème voici une possibilité pour le résoudre on a testé cette possibilité
et on l'a soit acceptée soit rejetée à chaque fois et vous pouvez vous dire qu'on n'a pas fait grand chose mais on a fait énormément chose parce qu'on a rejeté énormément d'idées mais ça c'est important parce qu'il ya énormément de code par exemple que vous pouvez trouver sur google dans lesquels on écrit des pavés énorme de prix processing sans avoir la moindre idée du résultat que ça va nous donner mais ça c'est pas intelligent qui est intelligent c'est de fonctionner étape par étape et c'est ce que je voulais vous montrer dans cette vidéo donc c'est
là la chose la plus importante que vous devez retenir voilà c'est la fin de cette vidéo de prix processing sur le data 7 du coronavirus vous pouvez accéder au code que j'ai écrit dans la vidéo sur mon github le lien est dans la description et si vous avez la moindre question n'hésitez pas à la laisser dans les commentaires ou bien à vous rendre sur notre discorde le lien est également dans la vidéo pour finir j'aimerais remercier tous les gens qui me soutiennent sur tipi vous êtes de plus en plus nombreux ça fait chaud au coeur
et au passage j'en profite pour vous dire que le bonus de ce mois arrive très bientôt vous en faites pas pour ça et voilà merci de vous abonner portez vous bien et je vous dis à très vite pour la prochaine vidéo [Musique]