Algoritmo naive bayes Covid-19 en Colombia

Julio 2, 2020

Imagina que hoy te levantas de tu cama y te sientes un poco extraño, no te sientes del todo bien, lo primero que haces es levantarte y ir a buscar un doctor, pero el doctor te dice que no sabe que te esta pasando, que lo mejor es hacerte una serie de exámenes, después de un par de días te llegan los resultados y tedas cuenta que tienes una enfermedad que solo le pasa al 0.1% de la población.

Empiezas a sacar tus propias conclusiones y le preguntas al doctor ¿ Cual es la probabilidad de que le pase esto a una persona ? el te responde que el examen correctamente identificara a un 99% de las personas que tienen la enfermedad y al otro 1% que no la tienen. pero ¿ Realmente esto seria verdad ? aquí es donde entra el teorema de bayes.

En teoría de la probabilidad y minería de datos, un clasificador Naive Bayes es un clasificador probabilista fundamentado en el teorema de Bayes y algunas hipótesis simplificadoras adicionales.

Comprender el algoritmo naive bayes y aplicarlo a un caso particular, es donde le damos solución a nuestros problemas cotidianos, por lo tanto, me hice la siguiente pregunta ¿ Y si aplicamos un Clasificador bayesiano a las bases de datos de casos registrados por Covid-19 en Colombia?.

Se analizo el data set correspondiente de los casos registrados de covid-19 en Colombia desde la fecha de diagnostico 6/03/2020 - 12/04/2020.

Se obtuvo la base de datos del siguiente enlace Covid-19 Colombia.

Objetivo

Clasificar nuevos casos entrantes en las categorías Casa, Hospital, Uci o Fallecido.

Limpieza de datos

Se desarrollo la respectiva limpieza de los datos, exportando un archivo .csv denominado Casos-coronavirus-colombia, en el cual se trabajo con los casos que se reportaban Casa, Hospital, Uci, Fallecidos.

Entrenamiento

Los datos fueron entrenados con 2004 registros, equivalentes al 80%, y con un numero de prueba de 502, equivalente al 20% de los registros.

Entregable

En el archivo prediccion.csv, se encuentra como resultado la clasificación del algoritmo.

Empecemos!

A continuación se explicara el paso a paso del desarrollo del algoritmo, todo el proyecto fue desarrollado en el lenguaje Python.

Para llevar este proyecto puedes utilizar herramientas como google colab, anaconda, notebook de visual code.

Primero que nada, vamos a importar las siguientes librerías:

python Naive bayes covid-19

Importamos el método GaussianNB de la libreria scikit-learn

Importamos nuestra base de datos y la guardamos en una variable denominada X.

python Naive bayes covid-19

python Naive bayes covid-19

Como salida obtenemos los datos con los que vamos a trabajar, cada registro es un caso positivo de covid-19, claramente estos datos ya fueron procesados con su respectiva limpieza y estas listos para ser utilizados.

Borramos la columna Unnamed: 0 ya que nos esta duplicando el id de cada caso registrado.

python Naive bayes covid-19

Dividimos nuestros datos 80% de entrenamiento y 20% datos de prueba.

python Naive bayes covid-19

Observando la salida de los datos de train y test.

python Naive bayes covid-19

python Naive bayes covid-19

Obtenemos todas nuestras columnas menos nuestra variable a predecir (target) que seria Atención, es muy importante hacer esto, si no se hace de la manera adecuada podemos caer en un sobre ajuste donde el resultado seria 100%, lo que hacemos es retirar la columna a predecir.

python Naive bayes covid-19

python Naive bayes covid-19

Le pasamos la variable a predecir a nuestros datos de entrenamiento, se almacenara en la variable y_

python Naive bayes covid-19

Nuestro método GaussianNB(), que sera nuestro clasificador se ajustara a los datos de entrenamiento.

python Naive bayes covid-19

python Naive bayes covid-19

python Naive bayes covid-19

Como resultado se obtiene la predicción de los datos, estos datos no se representan de la mejor manera, por lo tanto vamos a observarlos en una matriz de confusión.

python Naive bayes covid-19

Graficámos la matriz con la librería seaborn.

python Naive bayes covid-19

python Naive bayes covid-19

Se puede observar solo una etiqueta de predicción, la etiqueta 0, esto nos da a entender que los pacientes deberían estar en la casa, ya que factorizando los datos se evaluan con la etiqueta 0, ¿ pero que paso con los pacientes que podrían haber estado en Hospital, Uci o fallecido ? el algoritmo clasifico 408 pacientes en casa, 25 en el Hospital, 19 en la Uci y 72 fallecidos.

Ahora vamos a observar que rendimiento tuvo nuestro algoritmo para clasificar estos datos.

python Naive bayes covid-19

python Naive bayes covid-19

Se obtiene un rendimiento del 77% ¿ deberíamos confiar en nuestro algoritmo ? la respuesta es si y no, ya que tenemos muy pocos datos de entrenamiento.

Como paso final, exportamos nuestra resultado en un archivo denominado prediccion.csv.

python Naive bayes covid-19

python Naive bayes covid-19

Conclusión

  • Se pudo observar como aplicar un algoritmo naive bayes a un caso real.
  • Si se desea mejorar el rendimiento de este algoritmo y de esa manera mejorar la clasificación, debemos agregar muchos mas datos, el código y las bases de datos se encuentra en el siguiente Repositorio en github
  • @Sergiorubiano25