Saltar al contenido

Preparando los datos para la ingeniería de características y el aprendizaje de la máquina

La mayoría de los algoritmos de aprendizaje de la máquina tienen dificultades para trabajar con los datos que tienen valores perdidos. La línea de código de abajo imprime el número de valores perdidos en las diferentes variables.

1df.apply(lambda x:sum(x.isull()),axis=0)

pitón

Preparando los datos para la ingeniería de características y el aprendizaje de la máquina
Preparando los datos para la ingeniería de características y el aprendizaje de la máquina

Salida:

123456789101112 Estado_marital 0 Dependientes 7 Es_graduado 6 Ingresos 0 Cantidad_de_préstamo 8 Plazo_meses 7 Puntuación_de_crédito 0 estado_de_aprobación 0 Edad 3 Sexo 1 Propósito 0 dtype: int64

Trataremos los valores que faltan según el tipo de variable.

Valores perdidos para las variables continuas

El método más utilizado para tratar los valores perdidos en las variables numéricas es sustituirlos por las medidas de tendencia central. Las tres líneas de código que aparecen a continuación reemplazan los valores perdidos en las variables $0027Cantidad_de_préstamo$0027, $0027Plazo_meses$0027 y $0027Edad$0027, respectivamente, con la media de estas variables. La cuarta línea imprime el número de valores perdidos en los datos. La salida muestra las correcciones que se han hecho en estas tres variables.

1234df[$0027Monto_de_préstamo$0027].fillna(df[$0027Monto_de_préstamo$0027].mean(), inplace=True)df[$0027Término_meses$0027].fillna(df[$0027Término_meses$0027]. mean(), inplace=True)df[$0027Edad$0027].fillna(df[$0027Edad$0027].mean(), inplace=True)df.apply(lambda x:sum(x.isull()),axis=0)

pitón

Salida:

123456789101112 Estado civil 0 Dependientes 7 Is_graduado 6 Ingresos 0 Monto del préstamo 0 Plazo_meses 0 Puntaje del crédito 0 estado de aprobación 0 Edad 0 Sexo 1 Propósito 0 dtype: int64

Valores perdidos para las variables categóricas

Una de las variables categóricas, $0027Is_graduate$0027, tiene seis valores perdidos. Como es una variable categórica, sustituiremos los valores perdidos por el modo de la distribución. La línea de código de abajo muestra el recuento de frecuencia de la variable.

1df[$0027Is_graduate$0027].value_counts()

pitón

Salida:

123 Sí 466 No 128 Nombre: Es_graduado, tipo: int64

La etiqueta «Sí» tiene la frecuencia más alta (o modo) para la variable «Is_grad», así que sustituiremos los valores que faltan por la etiqueta «Sí». La primera línea de código de abajo realiza esta tarea, mientras que la segunda línea imprime la distribución de la variable. La salida muestra 600 registros para la variable, lo que significa que los valores que faltan han sido reemplazados.

12df[$0027Is_graduate$0027].fillna($0027Sí$0027,inplace=True)df[$0027Is_graduate$0027].value_counts()

pitón

Salida:

123 Sí 472 No 128 Nombre: Es_graduado, tipo: int64

Borrar los registros que faltan

Los valores que faltaban de la variable $0027Is_graduate$0027 han sido reemplazados. Sin embargo, los datos todavía tienen siete valores perdidos en la variable $0027Dependientes$0027 y un valor perdido en la variable $0027Sexo$0027.

Como el número de valores perdidos es pequeño, aprenderemos otro enfoque para dejar caer los registros con valores perdidos. La primera línea de código de abajo utiliza la función $0027dropna()$0027 para soltar filas con cualquier valor faltante, mientras que la segunda línea comprueba la información sobre el conjunto de datos. La salida muestra que todas las variables tienen el mismo número de observaciones y que la imputación de los valores perdidos está completa.

12df = df.dropna()df.info()

pitón

Salida:

12345678910111213141516 <class $0027pandas.core.frame.DataFrame$0027; Int64Index: 592 entradas, 0 a 598 columnas de datos (total 11 columnas): Estado_marital 592 objeto no nulo Dependientes 592 objeto no nulo flotante64 Is_graduado 592 objeto no nulo Ingresos 592 objeto no nulo int64 Cantidad_préstamo 592 objeto no nulo flotante64 Plazo_meses 592 objeto no nulo flotante64 Puntuación_crédito 592 objeto no nulo estado_de_aprobación 592 objeto no nulo int64 Edad 592 objeto no nulo flotante64 Sexo 592 objeto no nulo Propósito 592 objeto no nulo Tipos de objeto: flotante64(4), int64(2), objeto(5) uso de memoria: 55.5+ KB

Los datos están libres de valores perdidos y ahora podemos trabajar en la parte de ingeniería de características. Empezaremos con las variables categóricas.

Ingeniería de Características para las Variables Categóricas