UNIVERSIDAD CENTRAL DEL ECUADOR
Facultad de Ingeniería y Ciencias Aplicadas
Aprendizaje Automático
2024-2024
Análisis de Ubicación de Farmacias en Quito
Usaremos el dataset: BD_Farmacias [Link]
El objetivo de este análisis es visualizar la distribución geográfica de farmacias en la ciudad de Quito, a partir de
un análisis del Área en m2 y la densidad poblacional de la ubicación, los datos almacenados en un archivo Excel.
Utilizando librerías como Pandas, Folium y Matplotlib, se crea un mapa interactivo que marca las ubicaciones
de cada farmacia.
1. Montamos el Drive y cargar el archivo excel
2. Crear el mapa de ubicaciones
Se establece la ubicación inicial del mapa (en Quito) con coordenadas de latitud y longitud ( -0.3163390, -
78.46403). Luego, se crea un objeto [Link] centrado en esas coordenadas con un nivel de zoom de
7.
3. Generación de Marcadores para las Farmacias: Se itera sobre cada fila del DataFrame, obteniendo las
coordenadas de cada farmacia y su nombre. Cada farmacia es representada por un marcador en el
mapa usando la librería Folium. Se asigna un color a cada marcador, aunque actualmente se usa un
solo color (rojo) para todas las farmacias y se va a generar el mapa interactivo con los marcadores
Procesamiento de Datos
Exploración: Se realiza un análisis preliminar del conjunto de datos. Se imprime información sobre el
número de instancias (filas) y atributos (columnas), los nombres de los atributos y los tipos de datos.
Esto permite obtener una visión general de los datos disponibles.
Descripción de los datos Numéricos: Se genera una descripción estadística de las columnas numéricas
del DataFrame. El valor NaN se maneja correctamente, y la función describe() ofrece un resumen con
estadísticas como el promedio, la desviación estándar, los valores mínimos y máximos, entre otros.
Análisis de la matriz de correlación: Se realiza un análisis de las correlaciones entre los atributos
numéricos del conjunto de datos. Se filtran las columnas numéricas (y se elimina la columna 'Año'
debido a que no es relevante para este análisis) y luego se calcula la matriz de correlación utilizando la
función .corr()y se crea el mapa de color que muestra las correlaciones entre las diferentes columnas
numéricas.
Limpieza
Valores faltantes: se realiza una verificación de los valores faltantes en cada columna del conjunto de datos. A
continuación, se muestra el número de valores faltantes para cada atributo:
Las columnas que contienen valores faltantes son:
CATEGORIA: 423 valores faltantes (99.53%).
Dirección: 1 valor faltante (0.24%).
Población: 2 valores faltantes (0.47%).
NSE_Predominante: 2 valores faltantes (0.47%).
Área: 2 valores faltantes (0.47%).
Estas columnas son las que tienen valores ausentes, siendo la columna CATEGORIA la que presenta la mayor
cantidad de valores faltantes (99.53%).
Información del conjunto de Datos
Al revisar la información del conjunto de datos con el método .info(), se obtiene la siguiente descripción:
El conjunto de datos contiene 425 instancias y 29 columnas.
Se observan que algunas columnas tienen valores completos (425 no nulos), mientras que otras tienen
valores faltantes.
Se destacan las columnas CATEGORIA, Población, NSE_Predominante, y Área como las que presentan
una proporción significativa de valores faltantes.
Porcentaje de valores faltantes
Para obtener una visión más clara de la magnitud de los valores faltantes, se calcula el porcentaje de valores
faltantes para cada columna: Los resultados muestran que las columnas con el mayor porcentaje de valores
faltantes son:
CATEGORIA: 99.53% de los valores son faltantes.
Población, NSE_Predominante, y Área: cada una tiene aproximadamente 0.47% de valores faltantes.
Las columnas con menos del 1% de valores faltantes probablemente no afecten significativamente el análisis,
mientras que la columna CATEGORIA tiene una gran cantidad de datos faltantes, lo que sugiere que se requiere
un tratamiento especial para esos valores ausentes.
Filtrado por valores faltantes
El filtrado revela que las filas con valores faltantes están distribuidas en varias columnas, pero no afectan a una
gran parte del conjunto de datos en su totalidad. Este análisis ayuda a identificar qué instancias están
incompletas y cuáles podrían requerir imputación o eliminación.
Visualización de valores faltantes
Para proporcionar una visualización más clara de los valores faltantes, se utiliza un mapa de calor que muestra
las ubicaciones de los valores ausentes en el conjunto de datos. Los valores faltantes se visualizan en un color
específico y tenemos que el mapa de calor permite observar la distribución de los valores faltantes. Las
columnas con grandes cantidades de valores faltantes, como CATEGORIA, se destacan claramente, mientras
que otras columnas tienen valores completos o mínimos.
TRATAMIENTO DE VALORES FALTANTES
Las columnas con más del 30% de valores faltantes fueron identificadas y se decidió eliminar aquellas que
superaban este porcentaje. En este caso, solo la columna CATEGORIA superó esta condicón, por lo que fue
eliminada del conjunto de datos para garantizar que el análisis posterior no se viera afectado por datos
incompletos en una variable clave.
El DataFrame D_cleaned ahora contiene 28 columnas, eliminando únicamente la columna CATEGORIA.
Información del dataframe Limpio: ahora contiene 425 filas y 28 columnas, con las siguientes columnas que
aún contienen valores faltantes:
Dirección: 1 valor faltante (0.24%).
Población: 2 valores faltantes (0.47%).
NSE_Predominante: 2 valores faltantes (0.47%).
Área: 2 valores faltantes (0.47%).
Visualización de valores faltantes
El mapa de calor mostró que las columnas con valores faltantes en el DataFrame limpio son Dirección,
Población, NSE_Predominante y Área, pero la mayoría de los datos están completos. La eliminación de la
columna CATEGORIA ha simplificado el conjunto de datos, dejándolo en un estado más adecuado para el
análisis.
Imputación Simple
El DataFrame D_cleaned ahora está completo, sin valores faltantes. Todas las columnas que contenían valores
nulos han sido imputadas correctamente. La información final del conjunto de datos
Estrategia de Imputación: Se utilizaron técnicas de imputación adecuadas para cada tipo de dato: la
mediana para variables numéricas (como Población) y la moda para variables categóricas (como
NSE_Predominante y Área). Esto permitió llenar los valores faltantes sin distorsionar la distribución de
los datos.
Conjunto de Datos Completo: Tras la imputación, el conjunto de datos está completo, sin valores
faltantes, lo que facilita el análisis posterior sin riesgos de perder información relevante.
Detección de outliers
En el proceso de detección de outliers se ha utilizado el modelo EllipticEnvelope para identificar observaciones
atípicas en las variables seleccionadas ('latitud', 'longitud', 'área m2', 'Población'). Este modelo permite detectar
puntos que se desvían significativamente de la distribución general de los datos.
Resultados:
Número de valores válidos (no outliers): 382
Número de outliers: 43
El modelo ha identificado 43 observaciones como outliers, las cuales representan datos que se encuentran
fuera de la distribución normal esperada para las variables analizadas. Estos outliers pueden indicar errores en
los datos o representaciones extremas que merecen una revisión o un tratamiento especial antes de realizar
análisis adicionales.
Tratamiento de los Datos
Normalizar y estandarizar
Normalizamos los datos utilizando el MinMaxScaler Este proceso transforma los datos para que estén en el
rango de 0 a 1, lo cual es útil cuando las variables tengan la misma escala. Se selecciono dos columnas del
conjunto de datos: 'area m2' y 'Población'.
El array de resultados que has obtenido es la versión normalizada de esos datos. Cada fila corresponde a una
observación, y las dos columnas representan las versiones normalizadas de los valores en las columnas 'area
m2' y 'Población'.
la normalización fue aplicada para que las dos variables tengan la misma escala y puedan ser comparadas o
utilizadas para las características estén en un rango similar.
Modelo de K-means
En este análisis, aplicamos el algoritmo de K-means para agrupar los datos relacionados con dos variables:
"Área en m²" y "Población". A continuación, se presentan los pasos, resultados y una interpretación detallada
de los mismos.
1. Inicialización de los Centros de los Clústeres
El primer paso consiste en seleccionar 4 centros iniciales de manera aleatoria dentro del conjunto de datos.
Cada uno de estos puntos iniciales representa el centro de un posible grupo que se formará durante el proceso
de agrupamiento.
2. Asignación de Puntos a los Clústeres
Una vez establecidos los centros, el siguiente paso es asignar cada punto del conjunto de datos al clúster más
cercano, utilizando la distancia euclidiana como métrica.
Esto asegura que cada punto se asigna al centroide más cercano. Los puntos son asignados a uno de los 4
clústeres posibles.
3. Actualización de los Centros de los Clústeres
Luego de asignar los puntos, se recalculan los centros de los clústeres tomando la media de las coordenadas de
todos los puntos asignados a cada clúster
Este proceso se repite iterativamente hasta que los centroides se estabilicen (es decir, ya no cambien
significativamente entre iteraciones).
4. Visualización de los Resultados
Una vez completado el proceso de agrupamiento, se genera una visualización en la que los puntos están
coloreados según el clúster al que pertenecen, y los centros de los clústeres están marcados con un símbolo
especial (en este caso, un asterisco rojo).
5. Interpretación de los Resultados
A partir del gráfico y los resultados, podemos interpretar cómo se agrupan los puntos de datos según las dos
variables analizadas: Área en m² y Población.
Cada clúster representa un grupo de puntos con características similares, es decir, un rango de valores
cercano en cuanto a área y población.
Los centroides de los clústeres indican los puntos promedio dentro de cada grupo. Estos centroides
proporcionan una visión de las "tendencias" en el comportamiento de los datos.
En este análisis, se busca determinar el número óptimo de clústeres para agrupar los datos utilizando el
algoritmo K-means. Para ello, hemos empleado el método del codo, que se basa en la observación de la Suma
de los Errores Cuadráticos (SSE) en función del número de clústeres KKK.
1. Visualización de los Clústeres en el Mapa con Folium
Antes de realizar el análisis del número óptimo de clústeres, se han asignado los puntos a sus respectivos
clústeres y se ha representado la información en un mapa interactivo utilizando la librería Folium. Este mapa
permite visualizar cómo se distribuyen geográficamente los puntos de datos, coloreados según su clúster. Esto
da como resultado un mapa donde los puntos están agrupados en diferentes colores según el clúster al que
pertenecen, lo que permite una visualización clara de la segmentación geográfica de los datos.
2. Cálculo de la Suma de Errores Cuadráticos (SSE)
El siguiente paso es el cálculo de la Suma de los Errores Cuadráticos (SSE), que mide la variabilidad dentro de
los clústeres. Este valor se calcula como la suma de las distancias cuadradas de cada punto al centroide de su
clúster. Se utiliza para evaluar qué tan bien están agrupados los puntos dentro de cada clúster. Cuanto más
pequeño sea el SSE, mejor será el agrupamiento.
3. Método del Codo
El método del codo se utiliza para determinar el número óptimo de clústeres observando cómo cambia el SSE a
medida que se aumenta KKK. Se ejecuta el algoritmo K-means para diferentes valores de KKK y se calcula el SSE
correspondiente para cada uno. Luego, se grafica el SSE en función de KKK. El "codo" en el gráfico es el punto
donde el SSE deja de disminuir significativamente, lo que indica el número adecuado de clústeres.
El número óptimo de clusters es: 3
4. Determinación del Número Óptimo de Clústeres
El análisis con el método del codo nos proporciona una visualización gráfica del SSE en función de KKK. A través
de esta gráfica, podemos identificar el punto donde la disminución del SSE se vuelve menos pronunciada, lo
que corresponde al número óptimo de clústeres.
En el caso específico de este análisis, el número óptimo de clústeres ha sido determinado como K=4K = 4K=4,
basado en el comportamiento del SSE, tal como se observa en la gráfica.
Número óptimo de clústeres: A través del método del codo, determinamos que el número óptimo de
clústeres es 4.
Visualización geográfica: La visualización de los clústeres en el mapa de Folium permite observar cómo
se distribuyen los puntos geográficamente y cómo los clústeres reflejan diferentes segmentos de los
datos en función de las variables analizadas.
SSE: La suma de los errores cuadráticos es útil para evaluar la calidad del agrupamiento y observar la
eficiencia de la segmentación.
K-means ++
El algoritmo K-means++ es una variante mejorada del K-means que mejora la inicialización de los centroides
para optimizar el proceso de agrupamiento y reducir la posibilidad de converger a un mínimo local.
1. Inicialización de centroides (K-means++):
o Selección aleatoria del primer centroide.
o Cálculo de la distancia mínima de cada punto a los centroides seleccionados.
o Asignación de probabilidades proporcional al cuadrado de la distancia mínima.
o Elección del siguiente centroide basado en las probabilidades.
2. Iteración del algoritmo K-means:
o Asignar cada punto al cluster más cercano basado en la distancia definida.
o Actualizar los centroides calculando el promedio de los puntos asignados a cada cluster.
o Verificar convergencia (cuando los centroides no cambian significativamente entre iteraciones).
3. Método del Codo:
o Calcular la suma de errores cuadráticos (SSE) para diferentes valores de K.
o Graficar el SSE en función de K y localizar el “codo” donde la disminución del SSE se desacelera
notablemente.
El número óptimo de clusters es: 8
K-Medoide
Es un agrupamiento utilizado para dividir un conjunto de datos en K clústeres, donde cada clúster está
representado por un punto del conjunto de datos denominado "medoide". Este método es particularmente
robusto frente a valores atípicos, ya que utiliza puntos reales en lugar de promedios como representantes de
los clústeres.
Inicialización de Medoides :
Se seleccionan K puntos del conjunto de datos de forma aleatoria como métodos iniciales. Estos puntos
representarán los clústeres en la iteración inicial. Asignación de Clústeres :
Cada punto del conjunto de datos se asigna al clúster cuyo medoide está más cerca según una métrica
de distancia especificada (por ejemplo, la distancia euclidiana o de Manhattan).
Actualización de Medoides :
Para cada clúster, se selecciona un nuevo método minimizando la suma total de las distancias entre los
puntos del clúster y el método candidato. Este proceso asegura que el medio sea representativo del
clúster.
El algoritmo se detiene cuando los medoides no varían significativamente entre iteraciones consecutivas o
cuando se alcanza un número máximo de iteraciones. Para medir la calidad del agrupamiento, se calcula la
suma de distancias intra-clúster , que representa la cohesión interna de los clústeres. Esta métrica se
minimiza al ajustar los medios.
Selección del Número Óptimo de Clústeres: Método del Codo
El método del codo se utiliza para determinar el valor óptimo de K . Se grafica la suma de distancias intra-
clúster para diferentes valores de K , buscando el punto donde la reducción en la distancia comienza a ser
menos pronunciada (el "codo" de la curva).
El k óptimo según el método del codo es: 3