Regresión logística en Python: preparación de datos
Para crear el clasificador, debemos preparar los datos en un formato solicitado por el módulo de construcción del clasificador. Preparamos los datos haciendoOne Hot Encoding.
Codificación de datos
Discutiremos en breve lo que queremos decir con la codificación de datos. Primero, ejecutemos el código. Ejecute el siguiente comando en la ventana de código.
In [10]: # creating one hot encoding of the categorical columns.
data = pd.get_dummies(df, columns =['job', 'marital', 'default', 'housing', 'loan', 'poutcome'])
Como dice el comentario, la declaración anterior creará la única codificación activa de los datos. Veamos qué ha creado. Examine los datos creados llamados“data” imprimiendo los registros de cabecera en la base de datos.
In [11]: data.head()
Verá la siguiente salida:
Para comprender los datos anteriores, enumeraremos los nombres de las columnas ejecutando el data.columns comando como se muestra a continuación -
In [12]: data.columns
Out[12]: Index(['y', 'job_admin.', 'job_blue-collar', 'job_entrepreneur',
'job_housemaid', 'job_management', 'job_retired', 'job_self-employed',
'job_services', 'job_student', 'job_technician', 'job_unemployed',
'job_unknown', 'marital_divorced', 'marital_married', 'marital_single',
'marital_unknown', 'default_no', 'default_unknown', 'default_yes',
'housing_no', 'housing_unknown', 'housing_yes', 'loan_no',
'loan_unknown', 'loan_yes', 'poutcome_failure', 'poutcome_nonexistent',
'poutcome_success'], dtype='object')
Ahora, explicaremos cómo la codificación en caliente la realiza el get_dummiesmando. La primera columna en la base de datos recién generada es el campo "y" que indica si este cliente se ha suscrito a un TD o no. Ahora, veamos las columnas que están codificadas. La primera columna codificada es“job”. En la base de datos, encontrará que la columna "trabajo" tiene muchos valores posibles, como "administrador", "obrero", "empresario", etc. Para cada valor posible, tenemos una nueva columna creada en la base de datos, con el nombre de la columna como prefijo.
Por lo tanto, tenemos columnas llamadas "job_admin", "job_blue-collar", etc. Para cada campo codificado en nuestra base de datos original, encontrará una lista de columnas agregadas en la base de datos creada con todos los valores posibles que la columna toma en la base de datos original. Examine cuidadosamente la lista de columnas para comprender cómo se asignan los datos a una nueva base de datos.
Comprensión del mapeo de datos
Para comprender los datos generados, imprimamos todos los datos utilizando el comando de datos. La salida parcial después de ejecutar el comando se muestra a continuación.
In [13]: data
La pantalla anterior muestra las primeras doce filas. Si se desplaza hacia abajo más, verá que el mapeo está hecho para todas las filas.
Aquí se muestra una salida de pantalla parcial más abajo en la base de datos para su referencia rápida.
Para comprender los datos mapeados, examinemos la primera fila.
Dice que este cliente no se ha suscrito a TD como lo indica el valor en el campo "y". También indica que este cliente es un cliente "manual". Desplazándose hacia abajo horizontalmente, le dirá que tiene una "vivienda" y no ha tomado ningún "préstamo".
Después de esta codificación en caliente, necesitamos un poco más de procesamiento de datos antes de que podamos comenzar a construir nuestro modelo.
Dejar lo "desconocido"
Si examinamos las columnas en la base de datos mapeada, encontrará la presencia de algunas columnas que terminan en "desconocido". Por ejemplo, examine la columna en el índice 12 con el siguiente comando que se muestra en la captura de pantalla:
In [14]: data.columns[12]
Out[14]: 'job_unknown'
Esto indica que se desconoce el trabajo para el cliente especificado. Obviamente, no tiene sentido incluir tales columnas en nuestro análisis y construcción de modelos. Por lo tanto, todas las columnas con el valor "desconocido" deben descartarse. Esto se hace con el siguiente comando:
In [15]: data.drop(data.columns[[12, 16, 18, 21, 24]], axis=1, inplace=True)
Asegúrese de especificar los números de columna correctos. En caso de duda, puede examinar el nombre de la columna en cualquier momento especificando su índice en el comando de columnas como se describió anteriormente.
Después de eliminar las columnas no deseadas, puede examinar la lista final de columnas como se muestra en el resultado a continuación:
In [16]: data.columns
Out[16]: Index(['y', 'job_admin.', 'job_blue-collar', 'job_entrepreneur',
'job_housemaid', 'job_management', 'job_retired', 'job_self-employed',
'job_services', 'job_student', 'job_technician', 'job_unemployed',
'marital_divorced', 'marital_married', 'marital_single', 'default_no',
'default_yes', 'housing_no', 'housing_yes', 'loan_no', 'loan_yes',
'poutcome_failure', 'poutcome_nonexistent', 'poutcome_success'],
dtype='object')
En este punto, nuestros datos están listos para la construcción de modelos.