Prétraitement Efficace des Données avec des Pipelines
Avec la possibilité de transformer les colonnes séparément à l'aide de la fonction make_column_transformer
, l'étape suivante consiste à construire des pipelines. Un pipeline est un conteneur qui organise les étapes de prétraitement et les applique séquentiellement.
Un pipeline dans Scikit-learn peut être créé soit à l'aide du constructeur de la classe Pipeline
, soit avec la fonction make_pipeline
du module sklearn.pipeline
. Ce cours se concentrera sur make_pipeline
, car son utilisation est plus simple.
Il suffit de passer tous les transformateurs en arguments à une fonction. La création de pipelines est aussi simple que cela.
Cependant, lorsque la méthode .fit_transform(X)
est appelée sur l'objet Pipeline
, elle applique .fit_transform(X)
à chaque transformateur à l'intérieur du pipeline. Ainsi, si certaines colonnes doivent être traitées différemment, il convient d'utiliser un ColumnTransformer
et de le passer à make_pipeline()
.
Construire un pipeline en utilisant le même fichier que dans le chapitre précédent. Le pipeline doit inclure des encodeurs pour les variables catégorielles ainsi que SimpleImputer
. Étant donné que le jeu de données contient à la fois des variables nominales et ordinales, utiliser un ColumnTransformer
pour les traiter séparément.
1234567891011121314151617import pandas as pd from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder from sklearn.impute import SimpleImputer from sklearn.pipeline import make_pipeline df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') # Making a column transformer edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] ct = make_column_transformer( (OrdinalEncoder(categories=[edu_categories]), ['parental level of education']), (OneHotEncoder(), ['gender', 'race/ethnicity', 'lunch', 'test preparation course']), remainder='passthrough' ) # Making a Pipeline pipe = make_pipeline(ct, SimpleImputer(strategy='most_frequent')) print(pipe.fit_transform(df))
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain what each step in the pipeline is doing?
What is the difference between OneHotEncoder and OrdinalEncoder?
Why do we use SimpleImputer with the 'most_frequent' strategy here?
Awesome!
Completion rate improved to 3.13
Prétraitement Efficace des Données avec des Pipelines
Glissez pour afficher le menu
Avec la possibilité de transformer les colonnes séparément à l'aide de la fonction make_column_transformer
, l'étape suivante consiste à construire des pipelines. Un pipeline est un conteneur qui organise les étapes de prétraitement et les applique séquentiellement.
Un pipeline dans Scikit-learn peut être créé soit à l'aide du constructeur de la classe Pipeline
, soit avec la fonction make_pipeline
du module sklearn.pipeline
. Ce cours se concentrera sur make_pipeline
, car son utilisation est plus simple.
Il suffit de passer tous les transformateurs en arguments à une fonction. La création de pipelines est aussi simple que cela.
Cependant, lorsque la méthode .fit_transform(X)
est appelée sur l'objet Pipeline
, elle applique .fit_transform(X)
à chaque transformateur à l'intérieur du pipeline. Ainsi, si certaines colonnes doivent être traitées différemment, il convient d'utiliser un ColumnTransformer
et de le passer à make_pipeline()
.
Construire un pipeline en utilisant le même fichier que dans le chapitre précédent. Le pipeline doit inclure des encodeurs pour les variables catégorielles ainsi que SimpleImputer
. Étant donné que le jeu de données contient à la fois des variables nominales et ordinales, utiliser un ColumnTransformer
pour les traiter séparément.
1234567891011121314151617import pandas as pd from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder from sklearn.impute import SimpleImputer from sklearn.pipeline import make_pipeline df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') # Making a column transformer edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] ct = make_column_transformer( (OrdinalEncoder(categories=[edu_categories]), ['parental level of education']), (OneHotEncoder(), ['gender', 'race/ethnicity', 'lunch', 'test preparation course']), remainder='passthrough' ) # Making a Pipeline pipe = make_pipeline(ct, SimpleImputer(strategy='most_frequent')) print(pipe.fit_transform(df))
Merci pour vos commentaires !