0% encontró este documento útil (0 votos)
0 vistas16 páginas

Informe software

El documento describe el desarrollo de un sistema de minería de datos basado en aprendizaje supervisado para clasificar patologías en datos epidemiológicos masivos, abordando problemas como el subregistro de enfermedades durante la pandemia de COVID-19. Se detallan objetivos, metodología de limpieza y transformación de datos, así como la implementación de modelos de clasificación y técnicas de balanceo de clases. Además, se presentan hallazgos y soluciones a problemas encontrados durante el desarrollo, asegurando la adaptabilidad y eficiencia del sistema.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
0 vistas16 páginas

Informe software

El documento describe el desarrollo de un sistema de minería de datos basado en aprendizaje supervisado para clasificar patologías en datos epidemiológicos masivos, abordando problemas como el subregistro de enfermedades durante la pandemia de COVID-19. Se detallan objetivos, metodología de limpieza y transformación de datos, así como la implementación de modelos de clasificación y técnicas de balanceo de clases. Además, se presentan hallazgos y soluciones a problemas encontrados durante el desarrollo, asegurando la adaptabilidad y eficiencia del sistema.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd

Sistema de Minería de Datos para la Clasificaciones de Patologías

mediante Aprendizaje Supervisado en Datos Epidemiológicos Masivos

1 Planeación
1.1 Definición del Problema
Durante los años 2020-2024, se presento una alta concentración de diagnóstico sobre
el COVID-19 provocando:

▪ Subregistro de gripe e influencia.


▪ Clasificaciones erróneas de neumonía como COVID.
▪ Sesgos clínicos durante picos epidemiológicos.
▪ Cambios en la relevancia de síntomas a lo largo de tiempo.

Sin embargo, al analizar datasets actuales, se observa que estos contienen información
diversa que no se limita unicamente a COVID-19, sino que incluye múltiples
variables,clínicas,demográficas y epistemológicas.

1.2 Objetivo General


Desarrollar un sistema de minería de datos basados en aprendizaje supervisado capaz de
procesar grandes volúmenes de datos epidemiología, identificar patrones y clasificar
distintas patologías de forma automatizada.

1.3 Objetivo Especifico


▪ Integrar datasets epidemiológicos de gran escala.
▪ Implementar un flujo automatizado de limpieza y transformación de datos.
▪ Implementación modelos como:
• Random Forest.
• Support Vector Machines(SVM).
• K-Nearest Neighbors(KNN).
▪ Aplicar técnicas de balanceo de clases (submestreo, SMOTE).
▪ Evaluar el desempeño de los modelos mediante métricas y visualización.
▪ Analizar la adaptabilidad del sistema a distintos tipos de datasets.

1.4 Alcance del Proyecto


El sistema desarrollado permite:
▪ Procesar datasets masivos.
▪ Adaptarse a distintos problemas de clasificación.
▪ Aplicarse en múltiples áreas.

No contempla:
 Modelos de deep lerning.
 Implementación en tiempo real.
 Validación clínica directa.

1.5 Cronograma
2 Organigrama y Lista de Recursos
2.1 Organigrama Funcional

2.2 Recursos Tecnológicos


Lenguaje Principal
◦ Python

Librerías
◦ Pandas
◦ Numpy
◦ Scikit-learn
◦ Matplotlib

Entorno
◦ Entorno virtual(.venv)
◦ Visual Studio Code

3 Documento de Decisiones y Acciones de Dirección


La dirección implicara la toma de decisiones estratégicas y ajustes metodológicos durante
el desarrollo.

3.1 Dirección Estratégica


Registrare los cambios estratégicos para el entendimiento de la influencia del COVID,
ejemplo:

Decisión Estratégica Justificación Acción Impacto


Generalización del Los datasets contienen información El sistema ya no depende solo de
sistema diversa COVID

Discretización Variables numéricas causaban Permite convertir problemas a


automática errores clasificación

Clases desbalanceadas afectan el


Balanceo de clases Mejora de rendimiento
modelo

Uso de múltiples
Evita sesgo de un solo algoritmo Comparación mas robusta
modelos
3.2 Tratamiento Técnico de variables
En esta etapa se preparan los datos antes de entrenar los modelos. El sistema ahora no
esta orientado al uso de datos médicos, sino que puede trabajar con cualquier dataset,
ajustándose al tipo de información.

3.2.1 Carga y limpieza inicial de datos


▪ Script : [Link]

El dataset se carga en bloques, evitando problemas de memoria, debido al manejo de


millones de registros.

Durante este proceso:


• Se eliminan registros duplicados.
• Se corrigen valores faltantes automáticamente.

Funcionamiento:
• Si la columna es numérica→ se rellena con el promedio.
• Si es categórica→ se rellena con el valor mas frecuente.

Esto permite que el sistema funcione incluso si los datos están incompletos.
3.2.2 Eliminación de variables innecesarias
▪ Script : [Link]
▪ Clase: EliminadorVariables
▪ Método: transformar()

El sistema elimina columnas que no aportan valor,como:


• Identificadores(ID)
• Fechas(FECHA)

Ademas:
• El usuario puede eliminar variables manualmente desde la interfaz de usuario.
• La variable objetivo se protege automáticamente.
3.2.3 Codificación de variables categóricas
▪ Script : [Link]
▪ Método: codificar_categoricas()

Las variables de texto se convierten a formato numérico mediante:


• pd.get_dummies()

Regla adicional:
• Si una columna tiene demasiados valores únicos → se elimina.

Esto evita que el modelo se vuelva lento o ineficiente.


3.2.4 Discretización inteligente de la variable objetivo
▪ Script : [Link]
▪ Método: codificar_categoricas()

El sistema aplica discretización solo en casos específicos, transformando valores


numéricos a valores categóricos, creando rangos:
• Cuando la variable objetivo es EDAD

Con los grupos:


• Niño
• Joven
• Adulto
• Mayor
• Anciano

Luego:
• Se eliminan valores nulos generados
• Se elimina la columna original
• Se actualiza la variable objetivo

Este paso evita problemas cuando hay demasiados valores únicos.


3.2.5 Balanceo de Datos
▪ Script : [Link]
▪ Método: balanceo_por_submuestreo()

Este proceso ajusta el tamaño de las clases

El sistema:
• Detecta cada clase
• Si una clase supera 50,000 registros → la reduce.
• Mantiene intactas las clases pequeñas
• Une todo con “[Link]()”

Beneficios:
• Reduce uso de memoria
• Evita sobreentrenamiento
• Mejora el equilibrio del modelo
3.2.6 División de Datos
▪ Script : [Link]
▪ Método: dividir_datos(

Se divide el dataset en:


• 80% entrenamiento
• 20% prueba

• Si hay clases con pocos datos → se desactiva “stratify”


• Esto evita errores durante la división

3.2.7 Balanceo avanzado(SMOTE )


▪ Script : [Link]
▪ Método: aplicar_smote()

Se usa la técnica SMOTE solo si es seguro.

Condiciones:

Si se cumplen:

Si no:
• Se omite automáticamente.
• Esto evita errores y sobrecarga del sistema.
3.2.8 Normalización de Datos
▪ Script : [Link]
▪ Método: normalizar_datos()

Se aplica la transformación :

Beneficios:
• Mejora modelos como SVM
• Evita que una variable domine
• Hace mas estable el entrenamiento

3.2.9 Evaluación de modelos


▪ Script : [Link]
▪ Método: evaluar_modelo()

Se calculan las métricas:


◦ Accuracy → accuracy_score
◦ Precision → precision_score
◦ Recall → recall_score
◦ F1 → f1_score
Visualización generadas:
• Matriz de confusion → confusion_matrix()
• Histograma de errores → [Link]()
• Curva ROC → roc_curve() y auc() (solo si es aplicable)

3.2.10 Visualización exploratoria


▪ Script : [Link]

Métodos disponibles:
• grafica_distribucion()
• grafica_correlacion()
• grafica_histogramas()
• grafica_boxplots()
• importancia_varables()
4 Reporte de Control y Ajuste Propuestos

Durante el desarrollo del sistema se realizaron múltiples pruebas con datasets grandes, lo
que permitió identificar errores importantes.

Aparir de los errores, se hicieron ajustes directos en el código para el funcionamiento

4.1 Hallazgo 1: Errores al dividir los datos

◦ Problema detectado
Durante la ejecución se presentaba el error:
ValueError: The least populated classes in y have only 1 member

◦ Que significa esto?


Algunas clases tenían muy pocos datos(presentaban al menos 1 solo registro).
El método train_test_split() con stratify necesitaba al menos 2 datos por clases,
provocando que el software se detenía de manera inesperada.

◦ Por que ocurrió?


Esto sucedía porque :
• La variable objetivo tenia demasiados valores diferentes
• Algunas edades aparecían solo una vez.

◦ Solución
Script : [Link]
Método: dividir_datos()

4.2 Hallazgo 2
◦ Problema detectado
El sistema generaba errores y resultados incorrectos al usar EDAD como variable
objetivo. Provocando :
• Clase con 1 dato
• Modelo de aprendizaje inestable
◦ Por que ocurrió?
Porque EDAD es una variable continua, por lo cual cada numero se trataba como una
clase diferente.

◦ Solución
Script : [Link]
Método: discretizar_variable()

◦ Resultados
▪ Se reducen la clase a solo 5 grupos
▪ Se eliminan clases con pocos datos
▪ Mejora el rendimiento del modelo
4.3 Hallazgo 3: SMOTE no funcionaba correctamente
◦ Problema detectado
En algunos casos :
• SMOTE fallaba
• O hacia el sistema muy lento
• O generaba errores con clases pequeñas

◦ Por que ocurrió?


Porque SMOTE ncesita:
• Suficiente datos en cada clase
• Dataset pequeños

◦ Solución
Script : [Link]
Método: aplicar_smote()

◦ Resultado
▪ SMOTE solo se aplica cuando es seguro
▪ Se evita errores
▪ Mejora el rendimiento
4.4 Hallazgo 4 : Problemas de rendimiento con datasets grandes
◦ Problema detectado
El sistema :
• Se volvía lento
• Podría congelarse
• Consumo excesivo memoria

◦ Por que ocurrió?


Los datasets utilizados para el análisis presentan millones de registro, debido a esto y las
limitadas características del equipo utilizado el sistema era incapaz de procesar la
información.

◦ Solución
Script : [Link]
Método: cargar_datos_streaming()

Carga los datos por bloques , evitando cargarlos todo de golpe


Flujo de trabajo:
➢ Carga de datos
➢ Selección de variables objetivo
➢ Eliminación de variables irrelevantes
➢ Selección de variables predictivas
➢ Discretización (si se aplica)
➢ Limpieza y codificación
➢ Balanceo
➢ División de datos
➢ Entrenamiento
➢ Evaluación

5 Código y Resultados del Procesamiento de Dataset


5.1 Estructuras del código
Se propone la siguiente organización para el repositorio en

◦ /data
▪ <dataset_original>
▪ <dataset_limpio>

◦ /src
▪ [Link]
▪ [Link]
▪ [Link]
▪ evaluació[Link]

◦ /resultados
▪ métricas_modelo
▪ matriz_confusión
▪ importancia_variables

5.2 Procesamiento del dataset


▪ Carga de datos.
▪ Eliminación de duplicados.
▪ Imputación de valores faltantes.
▪ Codificación de variables categóricas.
▪ Balanceo con SMOTE.
▪ Normalización
▪ División Train/Test

5.3 Reusltados Esperados del Procesamiento


5.4 Interpretacion de Resultados
5.5 Evidencia Documental

También podría gustarte