Está en la página 1de 36

UNIVERSIDAD NACIONAL DE INGENIERÍA 

 
FACULTAD DE INGENIERÍA MECÁNICA  

DETECTOR DE NEUMONÍA EN RADIOGRAFÍAS 


TORÁCICAS USANDO TÉCNICAS DE MACHINE 
LEARNING 
 
Quispe Velásquez, Brian Donello 
Huaynate Almonacid, Luis Eduardo 
 
 
 
PROFESOR 
Ing. Calle Flores, Iván 
 
 
 
FECHA DE ENTREGA 
07 de setiembre de 2020 
 
ÍNDICE

1. ANÁLISIS EXPLORATORIO DE LA DATA 1

2. CLASIFICADORES CLÁSICOS 5
2.1. IMPORTAR LA DATA 5
2.2. PREPROCESAMIENTO DE LA DATA 6
2.3. SUPPORT VECTOR MACHINE 7
2.4. REGRESIÓN LOGÍSTICA 8
2.5. ÁRBOLES DE DECISIÓN 9
2.6. RESUMEN DE RESULTADOS PARA MODELOS CLÁSICOS 11

3. PERCEPTRÓN MULTICAPA (MLP) 12


3.1. ENTRENAMOS LA RED 14
3.1. MLP - IDENTITY 15
3.2. MLP - LOGISTIC 18
3.3. MLP - TANH 21
3.4. MLP - RELU 24

4. SIMULACIÓN DE PREDICCIÓN 27
4.1. IMPORTAR DATA DE VALIDACIÓN 27
4.2. PREPROCESAR LA DATA 27
4.3. IMPORTAR MODELOS ENTRENADOS 28
4.4. PLOTEO DE MUESTRAS 28
4.5. RESULTADOS 30

5. CONCLUSIONES 32
PRESENTACIÓN FINAL
0
1. ANÁLISIS EXPLORATORIO DE LA DATA

La data obtenida de ​https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia​ nos


provee de un total de 5586 radiografias de tipo jpeg, procedemos a analisar la data y a la
exploracion de la misma.

Importamos las librerías y cargamos las funciones a usar

Creamos rutas de acceso para explorar la data y sacar caracteristicas

1
Del análisis obtenemos obtenemos los siguientes cuadros de clasificación

2
Mostramos datos según canales de imagen y diagnostico.

3
4
2. CLASIFICADORES CLÁSICOS

Para tratar de resolver este problema de clasificación se empezará aplicando algoritmos


tradicionales de machine learning como support vector machine, árboles de decisiones y
regresión logística. La construcción de estos modelos requiere pre procesar la data para
poder entrenar los modelos, es por ello que en la fase inicial de este proceso se
redimensiona la data para luego aplicar un análisis PCA sobre los píxeles de la imagen para
extraer los principales componentes.

2.1. IMPORTAR LA DATA

Empezamos definiendo las librerías necesarias y los directorios donde se ubican las
imágenes del conjunto de entrenamiento y el conjunto de prueba.

Continuamos definiendo las variables donde guardaremos las muestras y las etiquetas de
nuestro conjunto de entrenamiento. Luego accedemos al directorio de las imágenes para
después importarlas. Luego redimensionamos las imágenes para luego guardarlas en las
variables.

5
De forma análoga, repetimos el procedimiento para importar y guardar las muestras del
conjunto de prueba o testeo.

2.2. PREPROCESAMIENTO DE LA DATA

Una vez vectorizada la data, aplicamos un algoritmo PCA para extraer los componentes
principales de nuestra data de entrenamiento. En el caso particular de nuestra aplicación,
vemos conveniente extraer 150 atributos.

6
2.3. SUPPORT VECTOR MACHINE

Ahora definiremos nuestro modelo SVM, para ello importamos librerías de sklearn y luego
definimos un diccionario con los parámetros que probaremos en nuestro modelo. Con la
ayuda de la función GridSearchCV, se evaluarán las múltiples combinaciones obtenidas del
conjunto de parámetros, aplicando técnicas de validación cruzada para así obtener los
mejores parámetros del modelo.

Luego de ejecutar las líneas de código obtenemos que los mejores parámetros para nuestro
modelo SVM son C=10 y gamma= 0.005. Y finalizamos evaluando el desempeño del
modelo en los conjuntos de entrenamiento y testeo.

7
2.4. REGRESIÓN LOGÍSTICA

Para construir el modelo de regresión logística importamos las librerías de sklearn. Y de


forma análoga al modelo SVM, definimos un conjunto con los parámetros que serán
evaluados por la función GridSearchCV para obtener los mejores parámetros para el
modelo de regresión logística.

8
Luego de ejecutar las líneas de código obtenemos que los mejores parámetros para nuestro
modelo de regresión logística es C=0.1. Y finalizamos evaluando el desempeño del modelo
en los conjuntos de entrenamiento y testeo.

2.5. ÁRBOLES DE DECISIÓN

Para terminar con los modelos clásicos, construiremos un modelo de árbol de decisión.
Empezamos importamos las librerías de sklearn. Y para alcanzar el modelo óptimo
entrenaremos nuestro modelo usando el criterio de gini y el criterio de la entropía. El criterio
de gini nos permitirá medir el grado de impureza de los nodos; mientras que con el criterio
de la entropía mediremos la ganancia de información aportada por cada atributo. Además
estaremos variando el parámetro min_samples_split que nos permite definir la cantidad
mínima de muestras para que un nodo se pueda subdividir.

Luego de entrenar nuestro modelo, realizamos un conteo de los nodos y nodos finales
(hojas) para tener una idea de la estructura de nuestro modelo.

9
Finalizamos escribiendo un código para guardar el modelo entrenado y evaluar el
desempeño del modelo con el conjunto de entrenamiento y el conjunto de prueba.

10
El árbol de decisión con mejores resultados, cuando se utiliza el criterio de gini, es el
modelo que tiene como min_samples_split = 5. Con este modelo alcanzamos una precisión
del 73% sobre el conjunto de prueba.

Por otro lado, el árbol de decisión con mejores resultados, cuando se utiliza el criterio de la
entropía, es el modelo que tiene como min_samples_split = 4. Con este modelo alcanzamos
una precisión del 75% sobre el conjunto de prueba.

2.6. RESUMEN DE RESULTADOS PARA MODELOS CLÁSICOS

Modelos clásicos
Conjunto de entrenamiento Conjunto de prueba
Algoritmo de
machine learning Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
SVM 0 1.00 167 0.73
Regresión Logística 156 0.97 163 0.74
Árbol de decisiones 31 0.99 167 0.75

11
3. PERCEPTRÓN MULTICAPA (MLP)
Importamos la data con las librerias a utilizar y las librerias de sklearn neural network
https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html
?highlight=neural%20network#sklearn.neural_network.MLPClassifier y train_test_split de
model_selection
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.htm
l?highlight=model_selection#sklearn.model_selection.train_test_split​.
definimos el path del directorio de las carpetas de la data, cargamos.

12
hacemos un procesamiento de la data y creamos arreglos de las datas.

13
3.1. ENTRENAMOS LA RED
Para ello importamos las librerías y el uso de funciones de sklearn.neural_network,
sklearn.metrics, sklearn.model_selection. Creamos el modelo MLP, evaluamos el
desempeño de la red

14
3.1. MLP - IDENTITY

MLP: lbfgs - identity


Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 0 1.00 168 0.73
20 0 1.00 167 0.73
30 0 1.00 167 0.73
40 0 1.00 165 0.74
50 0 1.00 165 0.74
60 0 1.00 167 0.73
70 0 1.00 166 0.73
80 0 1.00 168 0.73
90 0 1.00 165 0.74
100 0 1.00 166 0.73
tabla de datos para datos lbfgs - identity.

Entrenamiento vs prueba lbfgs - identity .

15
MLP: sgd - identity
Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 69 0.98 148 0.76
20 39 0.99 157 0.75
30 55 0.98 168 0.73
40 77 0.98 141 0.77
50 94 0.98 137 0.77
60 63 0.98 162 0.76
70 42 0.99 129 0.75
80 100 0.98 152 0.78
90 81 0.98 151 0.77
100 39 0.99 160 0.74
tabla de datos para datos SGD - identity.

Entrenamiento vs prueba SGD - identity

16
MLP: adam - indetity
Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 145 0.97 172 0.72
20 106 0.98 167 0.73
30 170 0.97 158 0.75
40 374 0.93 107 0.83
50 89 0.98 145 0.77
60 108 0.98 178 0.71
70 92 0.98 175 0.72
80 130 0.98 168 0.73
90 149 0.97 186 0..70
100 153 0.97 180 0.71
tabla de datos para datos adam - identity.

Entrenamiento vs prueba ADAM - identity

17
3.2. MLP - LOGISTIC

MLP: lbfgs - logistic


Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 84 0.98 156 0.75
20 15 1.00 158 0.75
30 9 1.00 150 0.76
40 28 0.99 158 0.75
50 32 0.99 156 0.75
60 6 1.00 164 0.74
70 35 0.99 156 0.75
80 11 1.00 149 0.76
90 6 1.00 144 0.77
100 5 1.00 150 0.76
tabla de datos para datos lbfgs - logistic.

Entrenamiento vs prueba lbfgs - logistic.

18
MLP: sgd - logistic
Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 191 0.96 149 0.76
20 178 0.96 160 0.74
30 179 0.96 165 0.73
40 176 0.96 150 0.76
50 177 0.96 156 0.75
60 176 0.96 152 0.75
70 177 0.96 158 0.74
80 177 0.96 152 0.75
90 179 0.96 156 0.75
100 176 0.96 155 0.75
tabla de datos para datos SGD- logistic.

Entrenamiento vs prueba SGD - logistic

19
MLP: adam - logistic
Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 1341 0.74 234 0.62
20 1341 0.74 234 0.62
30 1341 0.74 234 0.62
40 1341 0.74 234 0.62
50 1341 0.74 234 0.62
60 1341 0.74 234 0.62
70 1341 0.74 234 0.62
80 1341 0.74 234 0.62
90 1341 0.74 234 0.62
100 1341 0.74 234 0.62
tabla de datos para datos ADAM- logistic.

Entrenamiento vs prueba ADAM - logistic

20
3.3. MLP - TANH

MLP: lbfgs - tanh


Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 41 0.99 157 0.75
20 78 0.99 157 0.75
30 14 1.00 153 0.75
40 27 0.99 139 0.78
50 31 0.99 159 0.75
60 20 1.00 152 0.76
70 6 1.00 148 0.76
80 10 1.00 158 0.75
90 14 1.00 159 0.75
100 3 1.00 146 0.77
tabla de datos para datos lbfgs - tanh.

Entrenamiento vs prueba lbfgs - tanh.

21
MLP: sgd - tanh
Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 64 0.98 148 0.76
20 41 0.99 157 0.74
30 51 0.99 168 0.73
40 60 0.98 141 0.77
50 94 0.98 137 0.78
60 68 0.98 162 0.77
70 42 0.99 129 0.74
80 88 0.98 152 0.79
90 47 0.99 151 0.75
100 32 0.99 160 0.74
tabla de datos para datos SGD - tanh.

Entrenamiento vs prueba SGD- tanh.

22
MLP: adam - tanh
Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 1341 0.74 234 0.62
20 1341 0.74 234 0.62
30 1341 0.74 234 0.62
40 1341 0.74 234 0.62
50 1341 0.74 234 0.62
60 1341 0.74 234 0.62
70 1341 0.74 234 0.62
80 1341 0.74 234 0.62
90 1341 0.74 234 0.62
100 1341 0.74 234 0.62
tabla de datos para datos ADAM - tanh.

Entrenamiento vs prueba ADAM- tanh.

23
3.4. MLP - RELU

MLP: lbfgs - relu


Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 0 1.00 162 0.74
20 0 1.00 164 0.74
30 0 1.00 167 0.73
40 0 1.00 166 0.73
50 0 1.00 171 0.73
60 0 1.00 162 0.74
70 0 1.00 170 0.73
80 0 1.00 168 0.73
90 0 1.00 170 0.73
100 0 1.00 166 0.73
tabla de datos para datos lbfgs - relu.

Entrenamiento vs prueba lbfgs - relu

24
MLP: sgd - relu
Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 82 0.98 149 0.76
20 50 0.99 154 0.75
30 49 0.99 162 0.74
40 208 0.96 197 0.68
50 43 0.99 155 0.75
60 77 0.99 141 0.77
70 44 0.99 163 0.74
80 111 0.98 131 0.79
90 67 0.99 148 0.76
100 48 0.99 155 0.75
tabla de datos para datos SGD - relu.

Entrenamiento y prueba SGD - relu.

25
MLP: adam - relu
Conjunto de entrenamiento Conjunto de prueba
Número de
capas Muestras mal Muestras mal
Precisión Precisión
clasificadas clasificadas
10 687 0.87 218 0.65
20 1341 0.74 234 0.62
30 1341 0.74 234 0.62
40 208 0.96 197 0.68
50 43 0.99 155 0.75
60 64 0.99 155 0.75
70 41 0.99 170 0.73
80 32 0.99 149 0.76
90 38 0.99 150 0.76
100 60 0.99 145 0.77
tabla de datos para datos ADAM - relu.

Entrenamiento y prueba ADAM - relu.

26
4. SIMULACIÓN DE PREDICCIÓN

En este apartado, los mejores modelos de cada estrategia de machine learning los
validaremos utilizando el tercer conjunto de datos (data de validación) que contiene 16
radiografías torácicas (8 de pacientes sanos y 8 de pacientes con neumonía).

4.1. IMPORTAR DATA DE VALIDACIÓN

4.2. PREPROCESAR LA DATA

27
4.3. IMPORTAR MODELOS ENTRENADOS

4.4. PLOTEO DE MUESTRAS

28
29
4.5. RESULTADOS

30
Finalmente obtenemos las siguientes tablas, donde podemos apreciar las predicciones de
los modelos que hemos elegido.

En la tabla de score podemos apreciar que los modelos de perceptrón multicapa que utilizan
la función de activación logística, tangente hiperbólica y relu presentan la mayor precisión.

Y si revisamos la precisión de estos modelos en el conjunto de testeo vemos que también


poseían los más altos scores

31
5. CONCLUSIONES

Se ha observado que los modelos basados en redes neuronales han destacado en el

problema de clasificación de radiografías torácicas, sobre todo los modelos que utilizan

como función de activación a la tangente hiperbólica y relu. Los resultados han demostrado

que estos modelos han generalizado, de forma más eficiente, los patrones necesarios para

detectar si la radiografía torácica pertenece a un paciente sano o enfermo de neumonía. No

obstante, debemos de mencionar que el modelo de regresión logística, a pesar de ser un

algoritmo tradicional de machine learning, ha logrado entregar un buen desempeño en la

tarea de clasificación.

32

También podría gustarte