Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Preprocesamiento de Datos Eficiente con Pipelines | Pipelines
Introducción al ML con Scikit-learn

bookPreprocesamiento de Datos Eficiente con Pipelines

Con la capacidad de transformar columnas por separado utilizando la función make_column_transformer, el siguiente paso es construir pipelines. Un pipeline es un contenedor que organiza los pasos de preprocesamiento y los aplica secuencialmente.

Un pipeline en Scikit-learn puede crearse utilizando el constructor de la clase Pipeline o la función make_pipeline del módulo sklearn.pipeline. Este curso se centrará en make_pipeline, ya que es más sencillo de aplicar.

Solo es necesario pasar todos los transformadores como argumentos a una función. Crear pipelines es así de sencillo.

Sin embargo, cuando se llama al método .fit_transform(X) sobre el objeto Pipeline, este aplica .fit_transform(X) a cada transformador dentro del pipeline, por lo que si se desea tratar algunas columnas de manera diferente, se debe utilizar un ColumnTransformer y pasarlo a make_pipeline().

Construir un pipeline utilizando el mismo archivo que en el capítulo anterior. El pipeline debe incluir codificadores para características categóricas junto con SimpleImputer. Dado que el conjunto de datos contiene tanto características nominales como ordinales, utiliza un ColumnTransformer para procesarlas por separado.

1234567891011121314151617
import 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))
copy
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

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

bookPreprocesamiento de Datos Eficiente con Pipelines

Desliza para mostrar el menú

Con la capacidad de transformar columnas por separado utilizando la función make_column_transformer, el siguiente paso es construir pipelines. Un pipeline es un contenedor que organiza los pasos de preprocesamiento y los aplica secuencialmente.

Un pipeline en Scikit-learn puede crearse utilizando el constructor de la clase Pipeline o la función make_pipeline del módulo sklearn.pipeline. Este curso se centrará en make_pipeline, ya que es más sencillo de aplicar.

Solo es necesario pasar todos los transformadores como argumentos a una función. Crear pipelines es así de sencillo.

Sin embargo, cuando se llama al método .fit_transform(X) sobre el objeto Pipeline, este aplica .fit_transform(X) a cada transformador dentro del pipeline, por lo que si se desea tratar algunas columnas de manera diferente, se debe utilizar un ColumnTransformer y pasarlo a make_pipeline().

Construir un pipeline utilizando el mismo archivo que en el capítulo anterior. El pipeline debe incluir codificadores para características categóricas junto con SimpleImputer. Dado que el conjunto de datos contiene tanto características nominales como ordinales, utiliza un ColumnTransformer para procesarlas por separado.

1234567891011121314151617
import 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))
copy
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 3
some-alt