Siento que estas clases han sido full técnicas y cargadas… nada fácil
Problemática de valores faltantes
El problema de trabajar con valores faltantes
Proceso de análisis y limpieza de datos
Visualizar y eliminar valores faltantes
Implicaciones de los distintos tipos de valores faltantes
Amplía tu conjunto de herramientas para explorar valores faltantes
Tratamiento de variables categóricas para imputación: codificación ordinal
Tratamiento de variables categóricas para imputación: one-hot encoding
Métodos de imputación de valores faltantes
Imputación basada en el donante
Imputación por media, mediana y moda
Imputación por llenado hacia atrás y hacia adelante
Imputación por interpolación
Imputación por KNN
Imputación por KNN en Python
Imputación basada en modelos
Introducción a la imputación basada en modelos
Imputaciones Múltiples por Ecuaciones Encadenadas (MICE)
Conclusión
Transformación inversa de los datos
¿Cómo continuar practicando?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Jesús Vélez Santiago
Aportes 17
Preguntas 1
Siento que estas clases han sido full técnicas y cargadas… nada fácil
me hubiera servido la codificación ordinal en el curso de EDA 🐠
La mayor parte de las variables categoricas son cadenas de textos y por tanto realizar operaciones con ellas no es trivial. Es asi como surge la necesidad de convertir o codificar las cadenas de texto a numeros de manera que los algoritmos puedan entenderlos o asociarlos
Consiste en mapear cada elemento unico de texto a un numero entero. Una vez realizada la codificacion podemos comenzar el proceso de imputacion introduciendo los datos a un algoritmo de imputacion
from sklearn import preprocessing
nhanes_transformed_df_aazg = nhanes_df.copy(deep=True)
label_encoder = preprocessing.LabelEncoder()
encoder_gender = label_encoder.fit_transform(nhanes_transformed_df_aazg.gender)
nhanes_transformed_df_aazg.gender = encoder_gender
nhanes_transformed_df_aazg.head()
Codificación ordinal
nhanes_transformed_df = (
pd.DataFrame(
categorical_tranformer.fit_transform(nhanes_df),
columns=categorical_tranformer.get_feature_names_out(),
index = nhanes_df.index
)
.rename_columns(
function = lambda x: x.removeprefix('ordinalencoder__')
)
.rename_columns(
function = lambda x: x.removeprefix('remainder__'))
) # Apply categorical transformer to the data
nhanes_transformed_df.head()
nhanes_df.select_dtypes(include=[object, 'category'])
categorical_columns = nhanes_df.select_dtypes(include=[object, 'category']).columns
categorical_columns
--> Index(['general_health_condition', 'gender'], dtype='object')
categorical_transformer = sklearn.compose.make_column_transformer(
# transformador variables a transformar
(sklearn.preprocessing.OrdinalEncoder(), categorical_columns),
remainder='passthrough' # permite omitir las demas variables para que no las transforme
)
categorical_transformer
(
pd.DataFrame(
categorical_transformer.fit_transform(nhanes_df)
)
)
nhanes_transformed_df = (
pd.DataFrame(
categorical_transformer.fit_transform(nhanes_df),
columns=categorical_transformer.get_feature_names_out(),
index=nhanes_df.index # vuelve a los indices del dataframe original
)
.rename_columns(
function = lambda x: x.removeprefix('ordinalencoder__')
)
.rename_columns(
function = lambda x: x.removeprefix('remainder__')
)
)
nhanes_transformed_df
Con el siguiente código pueden obtener las clases de sus variables categóricas del DataFrame que se generó en el minuto 13:30
# Obtener el transformer
print('Transformers: ', categorical_transformer.transformers_, end='\n\n\n')
# Del transformer obtener las categorías y significados de los numeros generados
print('Categorias o clases: ', categorical_transformer.transformers_[0][1].categories_)
X = [['Male'], ['Female'], ['Female']]
X
--> [['Male'], ['Female'], ['Female']]
encoder = sklearn.preprocessing.OrdinalEncoder()
encoder.fit_transform(X)
--> array([[1.],
[0.],
[0.]])
encoder.categories_
--> [array(['Female', 'Male'], dtype=object)]
encoder.inverse_transform([[1],[1],[0]])
--> array([['Male'],
['Male'],
['Female']], dtype=object)
Y otra cosa, segun la documentacion de skearn, ya el comando
encoder = sklearn.preprocessing.OrdinalEncoder()
no funciona para eso lo que se debe realizar es
from sklearn import preprocessing
encoder = preprocessing.OrdinalEncoder()
Eso es lo que dice la documentacion, y a mi me funciono asi, ya si a alguien le funciona de la primera forma no hay problema.
Pueden buscar Skearn 6.3. Preprocesamiento de datos
Algo curioso que me paso al momento de importar la libreria sklearn , es que me salia que no me aparecia, no se ejecutaba nada, cuando entre a la documentacion de sklearn , me entere que primero tenian que:
use
pip3 install scikit-learn
en lugar de
pip3 install sklearn
reemplace sklearn por scikit-learn en sus archivos de requisitos de pip (requirements.txt, setup.cfg, Pipfile, etc…)
si una de sus dependencias usa el paquete sklearn, sería genial si se toma un tiempo para rastrear qué paquete usa sklearn en lugar de scikit-learn e informarlo a su rastreador de problemas.
Ya despues uno puede importar sklern de forma normal y con el mismo nombre
import sklearn
Lo comento pr si alguien esta siguiendo el ejercicio en otra aplicacion diferente a DeepNote.
Es importante acotar que para el mejor aprovechamiento del curso, hay que tener las bases de sklearn, lo cual no está en los requisitos del curso.
Estaba haciendo un algoritmo justamente para hacer esto, estaba seguro que ya existía, que bien Platzi y que bien Sklearn!!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?