PYTHON SKLEARN PRE-PROCESSING + PIPELINE (22/30)




[ad_1]

Dans ce tutoriel Python sur sklearn (scikit-learn) je vous montre comment faire du pre-processing pour améliorer vos performances en Machine Learning et Data Science. Nous voyons comment traiter nos données avec LabelEncoder, OneHotEncoder, MinMaxScaler, StandardScaler, et bien d’autres transformers du module sklearn.preprocessing. En fin de vidéo je vous montre comment assembler plusieurs transformers ensemble avec le module Pipeline. Voici la timeline de la vidéo :

0:00 Intro
00:43 Data preprocessing
02:56 Transformer Sklearn
05:37 Encodage Ordinal
10:13 Encodage One-Hot
11:19 Sparse Matrix
15:44 Normalisation MinMax
19:27 Standardisation
22:41 RobustScaler
24:20 PolynomialFeatures
27:00 Discretisation
29:00 Pipelines

Petit résumé :

Le preprocessing est important pour améliorer la qualité de nos données avant leur passage dans la machine. Pour ca sklearn ont développé un objet appelé transformer. Son rôle est de transformer nos données de façon cohérente, en appliquant sur les données du testset la même fonction de transformation qui a servie a traiter les données du trainset.
Pour ca, les transformers disposent d’une méthode fit(X_train) et d’une méthode transform(X_test), un peu comme les estimateurs disposent d’une méthode fit(X_train, y_train) et d’une méthode predict(X_test)

Parmi les opération de preprocessing les plus populaires, on retrouve :

L’Encodage : LabelEncoder, OrdinalEncoder, LabelBinarizer, et OneHotEncoder
La Normalisation : MinMaxScaler, StandardScaler, RobustScaler
la Création de polynômes : PolynomialFeatures
la Discretisation : Binarizer, KBinDiscretizer
les transformations non-linéaires : PowerTransform, QuantileTransform

La classe Pipeline de sklearn permet d’assembler plusieurs transformers avec un estimateur, formant ainsi un estimateur composite. GridSearchCV vous permet ensuite de trouver les meilleurs paramètres de votre pipeline.

► MON SITE INTERNET EN COMPLÉMENT DE CETTE VIDÉO:
https://machinelearnia.com/

► REJOINS NOTRE COMMUNAUTÉ DISCORD
https://discord.gg/WMvHpzu

► D’autres BONUS sur Tipeee:
https://fr.tipeee.com/machine-learnia

► Recevez gratuitement mon Livre:
APPRENDRE LE MACHINE LEARNING EN UNE SEMAINE
CLIQUEZ ICI:
https://machinelearnia.com/apprendre-le-machine-learning-en-une-semaine/

► Télécharger gratuitement mes codes sur github:
https://github.com/MachineLearnia

► Abonnez-vous : https://www.youtube.com/channel/UCmpptkXu8iIFe6kfDK5o7VQ

► Pour En Savoir plus : Visitez Machine Learnia : https://machinelearnia.com/

► Qui suis-je ?
Je m’appelle Guillaume Saint-Cirgue et je suis Data Scientist au Royaume Uni. Après avoir suivi un parcours classique maths sup maths spé et avoir intégré une bonne école d’ingénieur, je me suis tourné vers l’intelligence artificielle de ma propre initiative et j’ai commencé à apprendre tout seul le machine learning et le deep learning en suivant des formations payantes, en lisant des articles scientifiques, en suivant les cours du MIT et de Stanford et en passant des week end entier à développer mes propres codes.
Aujourd’hui, je veux vous offrir ce que j’ai appris gratuitement car le monde a urgemment besoin de se former en Intelligence Artificielle.
Que vous souhaitiez changer de vie, de carrière, ou bien développer vos compétences à résoudre des problèmes, ma chaîne vous y aidera.
C’est votre tour de passer à l’action !

► Une question ? Contactez-moi: contact@machinelearnia.com

Source


[ad_2]

Comment List

  • Machine Learnia
    November 18, 2020

    Tu expliques vraiment bien. Merci beaucoup

  • Machine Learnia
    November 18, 2020

    Realy good

  • Machine Learnia
    November 18, 2020

    Goooooood

  • Machine Learnia
    November 18, 2020

    Bonjour j'avais lu que pour le decision tree il n'était pas nécessaire de standardiser les données. Qu'en est-il?

  • Machine Learnia
    November 18, 2020

    Salue Guillaume, est ce que tu peux faire un tuto qui explique bien l'interface SPYDER SVP!!!

  • Machine Learnia
    November 18, 2020

    Bonsoir, merci pour tes tuto . Ils sont absolument géniaux. Par contre quand je reprends l'exemple du GridSearchCV sur la pipeline à la fin de la video, j'ai des résultats différents pour les meilleurs paramètres avec des scores différents aussi, à chaque fois que je ré-exécute. Je demande cela est dû à quoi? Parce que ainsi ,je ne suis pas sûr que j'ai le meilleur modèle dès la première exécution du code.
    Merci et vraiment très utiles tes vidéos

  • Machine Learnia
    November 18, 2020

    Milles merci !! C'est remarquable tout ce que tu offres dans tes vidéos! Encore MERCI !

  • Machine Learnia
    November 18, 2020

    Bonjour Guillaume, je viens de m'abonner à votre chaine que je trouve super! j'ai déjà une question: dans la video 22, vous présentez fit comme une méthode de transformation, parle-t-on du même fit qu'on a vu dans les Modèles LinearRegression, SVM…? ou s'agit -il d'un autre fit?

  • Machine Learnia
    November 18, 2020

    Bonjour. Merci pour cette nième super vidéo
    En fait je ne comprends pas KBinsDiscretizer à 28:00. Il me semble que cela devrait renvoyer des nombres de 0 à 5. Non ?

  • Machine Learnia
    November 18, 2020

    Merci pour toutes ces vidéos!

  • Machine Learnia
    November 18, 2020

    salut,

    quand je tape sur youtub un thème est je découvre que vous avez déjà fait une vidéo sur ce que je cherche vous pouver pas imaginer a quelle point me fait plaisirs énormément merci beaucoup j'ai pris autant de chose grasse a vous merci encoure une fois .
    une question je peut utiliser une opération de preprocessing pour un problème de régression (perceptron multicouche) est c'est oui quelle est l’opération a utiliser ? merci professeur Guillaume

  • Machine Learnia
    November 18, 2020

    comme toujours superbe, meilleur prof très bonne pédagogie

  • Machine Learnia
    November 18, 2020

    Super video, juste j'ai pas bien compris comment dans la partie PolynomeFeatures avec un modele cense faire des regressions lineaires tu obtiens une courbe polynomiale

  • Machine Learnia
    November 18, 2020

    Mon meilleur résultat avec MinMax. 98% J'ai essayé ridgeClassifiera la place de LinearClassifier mais il me dit que le meilleur résultat est avec alpha = 0 ce qui revient, je crois, à une linearClassifier.
    RobustClassifier donne seulement 95% chez moi

  • Machine Learnia
    November 18, 2020

    Sais tu d'où viens le nom etrange "OneHotEncoder" ?

  • Machine Learnia
    November 18, 2020

    Attention la vignette vidéo suivante à la fin saute direct à la 24

  • Machine Learnia
    November 18, 2020

    Merci

  • Machine Learnia
    November 18, 2020

    Salut, tu nous dira un jour sur quels types de projets tu bosses ? Je suis curieux de savoir si tu codes des terminators

  • Machine Learnia
    November 18, 2020

    Salut Guillaume,
    Merci tout d'abord pour ce super travail, pour l'effort et l'explication.
    j'ai deux questions :
    1- est-que vous pouvez faire un video pour expliquer le principe de SGDclassifier comme vous avez fait pour le gradient de descent ??
    2 – Est que vous pouvez faire une autre série des videos pour le Deeplearning ou bien NLP ??
    et Merci encore une fois !!!

  • Machine Learnia
    November 18, 2020

    Merci encore pour ce super travail pédagogique. Sur Jupyter, je n'arrive pas à faire les zooms sur courbes.Est ce qu'il est conseillé d'utiliser une autre appli pour des graphs sur lesquels on veut zoomer manuellement? Par avance merci 😉

  • Machine Learnia
    November 18, 2020

    Salut Guillaume,
    Beau et amusant comme d'habitude, Merci bcp pour l'effort et l'explication et la livraison de la pensee sur une assiette … merci encore
    Nb: quand je regarde une video, j'attende avec impatience la prochaine 🙂

  • Machine Learnia
    November 18, 2020

    Bonjour Guillaume,
    merci pour les merveilleuses explications, très claires, nettes.
    J'ai une question, elle est la suivante:
    Pour la phase d'encodage nous pouvons utiliser la méthode de transformation des données catégorielles en numérique à travers
    df['column'].astype('category').cat.codes? Si oui quel est l'avantage par rapport à la méthode données dans sklearn.preprocessing? Quelle méthode préconiserez-vous?

    Merci.

  • Machine Learnia
    November 18, 2020

    Salut et merci pour tes vidéos.
    Je ne trouve pas le corrigé de l'exercice de la vidéo 21. Je pense avoir fait juste mais j'ai un problème pour afficher des graphiques de dataframes et je ne comprends pas pourquoi.

  • Machine Learnia
    November 18, 2020

    J'ai trouvé que StandardScaler est le best tranformer même par rapport à RobustScaler. Ma question c pourquoi le 1er transformer est à éviter alors qu'il fournit un meilleur score que le 2éme ?

  • Machine Learnia
    November 18, 2020

    Bonjour, merci pour cette vidéo. Juste une question stupide. Pourquoi vous avez pas fait la normalisation des données y_train avant de développer le modèle?

  • Machine Learnia
    November 18, 2020

    Merci beaucoup Guillaume pour la vidéo 🙂 ! à la prochaine vidéo.

  • Machine Learnia
    November 18, 2020

    Merci pour toutes ces vidéos et ce partage de connaissance ! Pédagogie au top ! Quel serait l'utilisation de la fonction PolynomialFeatures dans un projet de data science ? Si t'as un exemple histoire d'imagé le propos. Merci !

  • Machine Learnia
    November 18, 2020

    Ah merci le petit exemple sur la fin avec et sans normalisation donne une bonne idée de l'importance ! … (et la réponse à la question que j'allais posé ^^')

  • Machine Learnia
    November 18, 2020

    je suis impatient quand tu vas commencer la série sur le deep leraning

  • Machine Learnia
    November 18, 2020

    Merci énormément pour cette vidéo très enrichissante!

  • Machine Learnia
    November 18, 2020

    35:06 94 % !!

  • Machine Learnia
    November 18, 2020

    Merci pour toutes tes videos qui m'aident enormement donc mon travail. On est d'accord que la normalisation ne doit s'appliquer que sur des donnees quantitatives ? ou doit-on aussi normaliser les variables categorielles?

  • Machine Learnia
    November 18, 2020

    Merci guillaume pour cette superbe Video , je t'en remercie énormément!

    Dis moi stp au niveau des paramètres tu te bases sur quoi pour choisir les paramètres à optimiser .

    Concrètement pourquoi 'sgdclassifier__penalty': ['l1','l2'] et non 'sgdclassifier__penalty': ['l5','l6']

    et pour quoi chosir de travailler sur le paramètre 'sgdclassifier__penalty' et non le paramètre 'sgdclassifier__L1ratio' je voudrais savoir qu'est ce qui devrais nous guider pour choisir les paramètres à optimiser.

    merci!

  • Machine Learnia
    November 18, 2020

    Merci pour cette vidéo aussi riche que d'habitude
    J'aurais deux questions cette fois ci.
    -1) Concernant l'encodage des variables catégorielles, notamment l'encodage OneHot, tu nous as bien fait comprendre que sklearn avait développé des techniques de stockage des matrices creuses qui permet de gérer le problème d'espace, mais j'aimerais savoir, d'un point de vu logique notre dataset à quand même autant de dimensions en plus qu'il y avait de catégories dans la variable de départ. Ne risquons nous pas de souffrir de la malédiction de la dimension si nous avons beaucoup de catégories dans nos variables et éventuellement beaucoup de variables catégorielles ?
    -2) Ma deuxième question est de savoir si les opérations de preprocesssing, notamment de normalisation peuvent s'appliquer aussi sur des variables catégorielles encodées? Est-ce que ça aurait du sens ?

  • Machine Learnia
    November 18, 2020

    génial 😉

  • Machine Learnia
    November 18, 2020

    Bonjour,
    Tout d'abord merci pour cette séries de vidéos.
    Une question : Est ce que cela revient au même si tout le preprocessing est fait avant le split des données ?
    Merci

  • Machine Learnia
    November 18, 2020

    salut, tes cours sont magnifique et tres instructif mais tres souvent tes codes sont cache par tes videos et on ne voit ce que tu as ecrit.

  • Machine Learnia
    November 18, 2020

    Merci beaucoup pour vos excellentes vidéos!
    Lors du preprocessing, est-il possible d'inclure un traitement des outliers, notamment avec une méthode provenant de sklearn?

  • Machine Learnia
    November 18, 2020

    Bonjour Guillaume,

    Ce tutoriel est vraiment top. J'ai essayé de le mettre en pratique sur un projet, en combinant ces informations avec celles que tu donnes dans ton autre formation "SKLEARN PIPELINE AVANCEE" (pour ceux qui ne l'ont pas vu, allez-y, c'est vraiment super).
    Mais du coup, j'ai un problème dans la définition de mes paramètres GridSearch CV. J'ai créé des pipelines de transformers différents pour mes variables numériques et catégorielles, que je regroupe ensuite dans un pipeline "preprocessor" qui est utilisé avec mon estimateur (un XGBoost).
    Mon problème est que j'arrive à passer mes paramètres à vérifier par gridSearch pour l'estimateur (en utilisant la convention de nomage sklearn qui est d'indiquer le nom de l'estimateur en minuscule, suivi de 2x underscore et du nom du paramètre). Mais impossible de faire varier les paramètres du pipeline preprocessor. Je pensais faire 'preprocessor__polynomialfeatures__degree':[1,2,3,4,5] par exemple pour une transofrmation polynomiale, mais impossible de l'ajouter à mon GridSearch. Est-ce que tu sais comment procéder?
    Merci beaucoup pour ton aide!

  • Machine Learnia
    November 18, 2020

    Salut, encore une super vidéo très bien expliqué, merci 👍 il reste néanmoins un point que j'ai du mal à comprendre c'est l'utilisation de polynomial features dans linear regression, comment peut on obtenir une courbe à partir d'une fonction de régression linéaire ? Merci à celui ou celle qui pourra m'éclairer 😁

  • Machine Learnia
    November 18, 2020

    Bonjour Guillaume
    J'ai un problème dans la dernière étape si j'écris la ligne
    grid.fit(x_train, y_train)
    Le programme affiche une erreur
    Et si je ne l'écris pas le programme affiche le même résultat que vous
    Et des erreurs pour les deux dernières lignes.

    Merci pour votre aide

  • Machine Learnia
    November 18, 2020

    Merci pour cette video clé de ce MOOC!
    Une petite question sur la normalisation/mise à l'échelle, est-ce que sklearn effectue aussi une mise à l'échelle logarithmique, si par exemple on devait classer des atomes, des cellules, des billes, des planètes et des étoiles par leur diamètre?

  • Machine Learnia
    November 18, 2020

    Salut Guillaume,

    J'ai codé la pipeline que tu présentes en fin de vidéo et ça m'a sorti cette erreur :

    ——————————————————–
    ValueError Traceback (most recent call last)
    <ipython-input-4-36063720ad87> in <module>
    —-> 1 grid.fit(X_train,y_train)
    ~anaconda3libsite-packagessklearnmodel_selection_search.py in fit(self, X, y, groups, **fit_params)
    648 refit_metric = 'score'
    649
    –> 650 X, y, groups = indexable(X, y, groups)
    651 fit_params = _check_fit_params(X, fit_params)
    652
    ~anaconda3libsite-packagessklearnutilsvalidation.py in indexable(*iterables)
    246 """
    247 result = [_make_indexable(X) for X in iterables]
    –> 248 check_consistent_length(*result)
    249 return result
    250
    ~anaconda3libsite-packagessklearnutilsvalidation.py in check_consistent_length(*arrays)
    210 if len(uniques) > 1:
    211 raise ValueError("Found input variables with inconsistent numbers of"
    –> 212 " samples: %r" % [int(l) for l in lengths])
    213
    214
    ValueError: Found input variables with inconsistent numbers of samples: [112, 38]

  • Machine Learnia
    November 18, 2020

    Merci pour cette vidéo riche en contenu!
    Apparemment ici le test_size est laissé à 0.25 (par défaut), ce qui donne 97% avec pre-processing et 84% sans pre-processing.
    En passant par une boucle, on se rend facilement compte qu'en faisant varier test_size entre 0.25 et 0.50 (avec random_state=0), on obtient des précisions qui oscillent entre 92 et 98% avec pre-processing, et de 45 à 98% sans pre-processing.
    Du coup, le pre-processing nous garanti une stabilité de la mesure de précision quelque soit la taille du Test set et donc réduit le coût total de données nécessaires ?

  • Machine Learnia
    November 18, 2020

    svp je veux un programme qui permet de changer la couleur de certaints pixels dans l'image on veut pas changer toute la couleur de l'image ms juste certain pixel et mercii

  • Machine Learnia
    November 18, 2020

    Merci Monsieur Guillaume,
    Pour la première fois je peux avoir un porsantage de 100% xD.
    Mon code:
    model = make_pipeline(PolynomialFeatures(),

    StandardScaler(),

    SGDClassifier(random_state=0))

    #model

    params = {

    'polynomialfeatures__degree': np.arange(1, 7),

    'polynomialfeatures__include_bias': [True, False],

    'standardscaler__copy': [True, False],

    'sgdclassifier__penalty': ['L1', 'L2']

    }

    grid = GridSearchCV(model, param_grid=params, cv=4)

    grid.fit(X_train, y_train)

    best_model = grid.best_estimator_

    y_pred = best_model.predict(X_test)

    confusion_matrix(y_test, y_pred)

  • Machine Learnia
    November 18, 2020

    Comment décompresser une sparse matrix? j'ai utilisé LabelPowerSet pour un problème multilabel et les prédictions sont sous formes de sparse matrix, comment faire pour utiliser des metrics?

    PS: merci beaucoup pour tout ce que tu fais, tu m'as plusieurs fois sauvé la vie lol

Write a comment