• Saltar a la navegación principal
  • Saltar al contenido principal
Logo Codificando Bits

Codificando Bits

  • Academia
    • Rutas
    • Cursos
    • Proyectos
    • Tutoriales
  • Acceder
  • Suscribirse

7 – Creación de un dataset para clasificación de datos

Lección 7 del curso SQL Nivel Avanzado.

En la lección anterior vimos cómo usar diferentes herramientas de SQL para realizar el análisis bivariado y multivariado como parte del Análisis Exploratorio de datos.

En este tercer módulo del curso veremos cómo usar varias de las herramientas de SQL aprendidas hasta el momento, tanto en este curso como en los cursos SQL Nivel Intermedio y SQL Nivel Básico, para crear sets de datos que podrán ser usados para alimentar diferentes tipos de modelos de Machine Learning.

Específicamente en esta lección veremos cómo usar SQL para crear un set de datos para una tarea de clasificación en el Machine Learning.

La idea básica de la clasificación es que el modelo aceptará un dato de entrada y a la salida intentará predecir la categoría a la que pertenece el dato.

Por ejemplo, en este caso particular usaremos una base de datos que contiene 100.000 registros de personas con datos como la edad, su índice de masa corporal y sus niveles de glucosa en sangre, entre otros, y además de esto sabemos si la persona tiene o no diabetes. Así que en un problema de clasificación la idea es tomar estos datos de la persona (edad, índice de masa corporal, etc.) y presentarlos a la entrada del modelo (estas se conocen como las variables predictoras) y la idea es que tras el entrenamiento el modelo aprenda a predecir si la persona tendrá o no diabetes (que será la variable a predecir, precisamente).

Así que en esta lección veremos cómo preparar este set de datos suponiendo que luego lo usaremos para alimentar un modelo de clasificación de Machine Learning. Y en el camino veremos todos los pasos que usualmente están involucrados en esta preparación del set de datos.

Comencemos entonces haciendo uso de SQL para realizar una primera exploración de los datos, para entender qué tipos de variables tenemos y cuáles resultan relevantes para la creación de un clasificador:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

En esta primera exploración vimos que nuestro set de datos tiene variables tanto numéricas como categóricas y que además se usan diferentes tipos de dato para almacenar la información en estas columnas.

Además, determinamos que las columnas “id”, “year” y “location” no resultan relevantes para la construcción de un modelo de Machine Learning, así que hicimos uso de CREATE TABLE para crear una nueva tabla de datos (“diabetes_preproc”) que preserva únicamente las columnas que consideramos importantes para el modelo.

Con esto ya tenemos un punto de partida para continuar preparando el set de datos. Veamos entonces cómo realizar la conversión de los tipos de datos de nuestras variables así como algunas transformaciones de las columnas categóricas:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

En esta segunda etapa de preparación hemos hecho uso de la sentencia CASE y de las sentencias ALTER y ALTER TABLE para modificar la columna “diabetes” (la variable a predecir) garantizando de esta forma que las categorías son representadas numéricamente en formato de punto flotante (1.0 para personas con diabetes y 0.0 para personas que no tienen diabetes).

Además, hemos visto cómo usar la sentencia CASE nuevamente para codificar la columna “gender” (que es una columna categórica) en el formato “one-hot”. De esta forma hemos logrado representar las categorías “Other”, “Male” y “Female” con sus correspondientes codificaciones: [1,0,0], [0,1,0] y [0,0,1].

Y por último, hemos usado ALTER TABLE, ALTER COLUMN y SET DATA TYPE FLOAT para cambiar el tipo de dato de las columnas numéricas al formato punto flotante.

Así que, en este punto, todas las variables de nuestra tabla de datos (tanto numéricas como categóricas) están representadas numéricamente, un requisito esencial al momento de construir diferentes tipos de modelos de Machine Learning.

Nos resta únicamente una última fase que consiste en realizar el escalamiento de las variables numéricas. Veamos cómo implementar este escalamiento:

Contenido exclusivo para suscriptores

Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.

En esta última fase de preparación hemos implementado una “Common Table Expression” para realizar la transformación de los datos en SQL por mínimo y máximo.

Y además, hemos almacenado en una nueva tabla “factores_escalamiento” los valores mínimos y máximos de cada variable numérica usados durante el escalamiento, lo que resulta clave en caso de que, tras entrenar el modelo, queramos generar predicciones a partir de datos nuevos.

Así que en este punto ya hemos visto cómo usar SQL para implementar las fases que usualmente están involucradas al momento de preparar un set de datos para alimentar posteriormente un modelo clasificador de Machine Learning.

En la siguiente lección veremos un ejemplo similar de creación de un set de datos con SQL pero para generar predicciones sobre Series de Tiempo.

Todas las lecciones del curso SQL Nivel Avanzado

© Codificando Bits, LLC | Blog | Contacto | Servicios | Acerca de | Políticas

¿Has olvidado la contraseña?
¿Has perdido tu contraseña? Por favor, introduce tu nombre de usuario o dirección de correo electrónico. Recibirás por correo electrónico un enlace para crear una nueva contraseña.
body::-webkit-scrollbar { width: 7px; } body::-webkit-scrollbar-track { border-radius: 10px; background: #f0f0f0; } body::-webkit-scrollbar-thumb { border-radius: 50px; background: #dfdbdb }