Proyectos

project name: Pima Indians Diabetes Database

Pima Indians Diabetes Database

Un proyecto simple de kaggle para explorar y construir un modelo de clasificación binaria. El objetivo del proyecto es predecir si un paciente tiene o no diabetes en base a ciertas medidas diagnósticas.

Resumen de lo que hice para resolver el problema:

Como la página de Kaggle solo nos proporciona un conjunto de datos, hice manualmente una división del conjunto de datos, una para probar y otra para entrenar. Recordemos que no debemos mirar el conjunto de datos de prueba hasta el último paso del proyecto de ciencia de datos para evitar cualquier sesgo.

Realizó un EDA como de costumbre y descubro algunas cosas:

  • Columnas con una cantidad significativa de valores nan
  • Glucose, BMI y Diabetes Pedigree Function son una de las características más importantes basadas en el análisis de datos y el conocimiento del dominio. Sin embargo, voy a usar todas las funciones para entrenar el modelo y asegurarse de no perderme ninguna información importante.

Para tener una mejor comprensión de los datos, investigo un poco sobre la diabetes. Los hallazgos clave de esta investigación son:

  • La columna de glucosa es el resultado de una prueba de OGTT de 2 horas donde tener menos de 120-140 mg/dL es el resultado esperado para una persona normal
  • El sobrepeso es un factor de la diabetes, lo que significa que tener un IMC más alto significa una mayor probabilidad de contraer diabetes
  • La Diabetes Pedigree Function (DPF) es una fórmula matemática que se utiliza para estimar el riesgo de que una persona desarrolle diabetes en función de su historial familiar y otros factores de riesgo. En general, un valor de DPF inferior a 0,1 sugiere un riesgo bajo de desarrollar diabetes, mientras que un valor de 0,1 a 0,3 indica un riesgo intermedio y un valor superior a 0,3 indica un riesgo alto.
  • Los niveles normales de presión arterial diastólica deben ser inferiores a 80 mm Hg

Para encontrar el mejor modelo, primero intenté con modelos básicos (KNeighborsClassifier, SVC, RandomForestClassifier, LogisticRegression) y luego pasé a modelos ensemble (VotingClassifier, BaggingClassifier, AdaBoostClassifier, GradientBoostingClassifier, etc.).

Finalmente intenté usar oversampling.

El mejor modelo que encontré fue BaggingClassifier con LogisticRegression.

Qué aprendí:

  • El uso de oversampling puede causar un overfitting
  • Ensemble models aumentan un poco el rendimiento.
  • Conocimiento sobre la diabetes.
Ensemble learning
Random forest
Logistic regression