Skip to content

sebas112205/machine_learning

 
 

Repository files navigation

Segmentación Socioeconómica de Países usando K-Means Clustering

Creado por: María Isabel Zuluaga Quintero, Santiago Machado Serna

Descripción

Este proyecto implementa el algoritmo K-Means Clustering en Python utilizando pandas y numpy. Se trata de un enfoque de aprendizaje automático no supervisado que permite agrupar datos en clusters según sus similitudes. Su aplicación incluye segmentación de clientes, reconocimiento de patrones y análisis socioeconómico.

Arquitectura del Proyecto

machine_learning/
├── src/
│   ├── __init__.py
│   ├── model/
│   │   ├── KMeansLogic.py
│   │   ├── __init__.py
│   │   ├── errors/
│   │   │   ├── KMeansError.py
│   │   │   ├── __init__.py
│   ├── view/
│   │   ├── console/
│   │   │   ├── KMeansConsoleView.py
│
└── tests/
    ├── KMeansTest.py
    ├── __init__.py

│   casos_prueba.xlsx
│   datos_prueba.csv
│   estructura.txt
│   poetry.lock
│   pyproject.toml
│   README.md

Instalación y Configuración

1. Requisitos Previos

  • Python 3.6 o superior
  • Poetry para la gestión de dependencias

2. Clonar el Repositorio

git clone https://github.com/sanma613/machine_learning.git
cd machine_learning

3. Instalar Dependencias

poetry install

Uso del Proyecto

Ejecutar la Interfaz de Consola

python src/view/console/KMeansConsoleView.py
  • Se solicitará el dataset a clusterizar (por defecto hay un dataset de prueba en la raíz del proyecto).
  • El dataset debe contener las siguientes columnas: GDP_per_capita, life_expectancy, literacy_rate.
  • Se indicará el número de centroides deseados y las iteraciones máximas.
  • Un mayor número de iteraciones mejora la precisión de los resultados.

Ejecutar Pruebas Unitarias

python -m unittest tests/KMeansTest.py

Se incluyen:

  • 3 casos de prueba normales
  • 3 casos de prueba extraordinarios
  • 4 casos de error

📥 Entradas del Algoritmo

  • Dataset: DataFrame de pandas con datos numéricos. Cada fila representa un punto de datos y cada columna una característica.
  • num_centroids: Entero positivo que define el número de clusters.
  • max_i: Entero positivo que indica el número máximo de iteraciones.

📤 Salidas del Algoritmo

  • Coordenadas de los centroides refinados: Lista de tuplas con los centroides finales.
  • Dataset modificado que incluye:
    • Datos normalizados para GDP_per_capita, life_expectancy y literacy_rate.
    • Columna assigned_cluster: Índice del cluster asignado a cada punto de datos.

Proceso de K-Means

  1. Inicialización: Se seleccionan aleatoriamente k centroides a partir de los datos.
  2. Asignación de clusters: Cada punto se asigna al centroide más cercano.
  3. Actualización de centroides: Se recalculan los centroides como la media de los puntos asignados a cada cluster.
  4. Iteración: Se repiten los pasos hasta que los centroides se estabilizan o se alcanza el número máximo de iteraciones.

📊 Casos de Prueba

Un archivo en Excel (casos_prueba.xlsx) contiene al menos 10 casos de prueba usados para validar el algoritmo:

  • 3 casos normales
  • 3 casos extraordinarios
  • 4 casos de error

Los resultados pueden ser verificados con las pruebas unitarias incluidas en el repositorio.


📌 Recomendaciones

  • Se recomienda usar el dataset de prueba incluido en el repositorio.
  • Si creas tu propio dataset, asegúrate de incluir GDP_per_capita, life_expectancy y literacy_rate.
  • Antes de ejecutar el algoritmo, revisa que los datos sean numéricos y no contengan valores nulos.
  • Experimenta con diferentes valores de num_centroids y max_i para obtener mejores resultados.
  • Utiliza herramientas de visualización para analizar la segmentación realizada por el modelo.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%