Solución equipo Astrix
Solución equipo Astrix
Introducción
Introducción
Con este proyecto se busca mejorar no solo el desarrollo en la ciencia y tecnología, sino también en la vida y bienestar de todas las mujeres. Hoy en día las mujeres son una parte fundamental del mundo. Somos las mujeres del mañana que buscan un cambio, que luchan porque su voz sea escuchada. Durante la historia hemos sido silenciadas por el desconocimiento y el miedo, pero en la actualidad, somos un equipo que busca la equidad y la solidaridad.
El cáncer es una enfermedad que puede padecer cualquiera ya sea por herencia, dieta u otras razones. Sin embargo, el cáncer de mama afecta significativamente a las mujeres ya que provoca sentimientos como la impotencia, miedo y desesperación. No solo afecta al sistema físico, es una carga mental y psicológica que devasta el bienestar y autoestima de muchas mujeres.
Con esto se explica el motivo de estar hoy todas acá, buscando la salud y desarrollo de las mujeres en la vida cotidiana. Wolfram es una herramienta que nos permite concretar este sueño, con la verificación y certificación de la existencia de cáncer mamario. Se busca que cualquier mujer con o sin la condición pueda prevenir y tomar acción en su vida.
Para el funcionamiento tanto del equipo como del código, primero se asignaron las fortalezas de cada una: Keisy con el código, Jahishalli con la interpretación de datos y Mariel con ideas y parte escrita. Se hizo un análisis crítico respecto al enfoque del lenguaje y lógica del código.
El cáncer es una enfermedad que puede padecer cualquiera ya sea por herencia, dieta u otras razones. Sin embargo, el cáncer de mama afecta significativamente a las mujeres ya que provoca sentimientos como la impotencia, miedo y desesperación. No solo afecta al sistema físico, es una carga mental y psicológica que devasta el bienestar y autoestima de muchas mujeres.
Con esto se explica el motivo de estar hoy todas acá, buscando la salud y desarrollo de las mujeres en la vida cotidiana. Wolfram es una herramienta que nos permite concretar este sueño, con la verificación y certificación de la existencia de cáncer mamario. Se busca que cualquier mujer con o sin la condición pueda prevenir y tomar acción en su vida.
Para el funcionamiento tanto del equipo como del código, primero se asignaron las fortalezas de cada una: Keisy con el código, Jahishalli con la interpretación de datos y Mariel con ideas y parte escrita. Se hizo un análisis crítico respecto al enfoque del lenguaje y lógica del código.
Primer desafío:
Primeros datos
Primero se establece el directorio del cuaderno. Donde se consigue que esté en el computador. Luego podemos encontrar una instrucción donde se requiere cambiar el nombre de la carpeta. Se agregaron elementos como “\” para el funcionamiento correcto del sistema.
Primero se establece el directorio del cuaderno. Donde se consigue que esté en el computador. Luego podemos encontrar una instrucción donde se requiere cambiar el nombre de la carpeta. Se agregaron elementos como “\” para el funcionamiento correcto del sistema.
In[]:=
In[]:=
SetDirectory[NotebookDirectory[]]
Out[]=
C:\Users\ksybc\Dropbox\High School\CCA 10°\OLIMPIADAS\Hackaton
In[]:=
In[]:=
Directory[]
Out[]=
C:\Users\ksybc\Dropbox\High School\CCA 10°\OLIMPIADAS\Hackaton
In[]:=
(*Windows*)bcidImagesFolder=Directory[]<>"\\BCID"
Out[]=
C:\Users\ksybc\Dropbox\High School\CCA 10°\OLIMPIADAS\Hackaton\BCID
In[]:=
bcidImages=FileNames["*jpg",bcidImagesFolder,Infinity]
Out[]=
Segundos datos:
In[]:=
(*Windowsfolderswith\*)examNoCancer="Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\\Breast Cancer Dataset\\Original Dataset\\Non-Cancer"examCancer="Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\\Breast Cancer Dataset\\Original Dataset\\Cancer"
Out[]=
Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\Breast Cancer Dataset\Original Dataset\Non-Cancer
Out[]=
Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\Breast Cancer Dataset\Original Dataset\Cancer
Se establecen dos variables que presentan los documentos donde se obtiene la información sobre las mamografías. Se insertan las imágenes en forma de variables. Sucesivamente, se coloca la cantidad de imágenes con y sin cáncer, son seiscientas veinte fotos sin evidencia de cáncer y ciento veinticinco con. Se crea una función de interfaz gráfica que nos permita interactuar con los datos, “manipulate”. Mostrando así mismo la foto y su respectiva ubicación. Por último, se pueden encontrar dos visores de imágenes que las separa entre la presencia de cáncer y la ausencia. Los dos muestran el nombre del archivo, la imagen correspondiente y la función que nos permite navegar por las imágenes.
In[]:=
examImagesNoCancer=FileNames["*jpg",examNoCancer,Infinity];examImagesCancer=FileNames["*jpg",examCancer,Infinity];
In[]:=
Length[examImagesNoCancer]Length[examImagesCancer]
Out[]=
620
Out[]=
125
In[]:=
Manipulate[Column[{n,bcidImages[[n]],Image[Import[bcidImages[[n]]],ImageSize->Small]}],{n,1,Length[bcidImages],1},SaveDefinitions->True]
Out[]=
In[]:=
Manipulate[Column[{n,examImagesNoCancer[[n]],Image[Import[examImagesNoCancer[[n]]],ImageSize->Small]}],{n,1,Length[examImagesNoCancer],1},SaveDefinitions->True]
Out[]=
Import::nffil: File Mammogram Mastery A Robust Dataset for Breast Cancer
Detection and Medical Education\Breast Cancer Dataset\Original
Dataset\Non-Cancer\IMG (100).jpg not found during Import.
Detection and Medical Education\Breast Cancer Dataset\Original
Dataset\Non-Cancer\IMG (100).jpg not found during Import.
Image::imgarray:
The specified argument $Failed
should be an array of rank 2 or 3 with machine-sized numbers.
The specified argument $Failed
should be an array of rank 2 or 3 with machine-sized numbers.
In[]:=
Manipulate[Column[{n,examImagesCancer[[n]],Image[Import[examImagesCancer[[n]]],ImageSize->Small]}],{n,1,Length[examImagesCancer],1},SaveDefinitions->True]
Out[]=
Import::nffil: File Mammogram Mastery A Robust Dataset for Breast Cancer
Detection and Medical Education\Breast Cancer Dataset\Original
Dataset\Cancer\IMG (100).jpg not found during Import.
Detection and Medical Education\Breast Cancer Dataset\Original
Dataset\Cancer\IMG (100).jpg not found during Import.
Image::imgarray:
The specified argument $Failed
should be an array of rank 2 or 3 with machine-sized numbers.
The specified argument $Failed
should be an array of rank 2 or 3 with machine-sized numbers.
In[]:=
RandomSample[examImagesCancer,5]Information[Import[First[%]]]
Out[]=
{Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\Breast Cancer Dataset\Original Dataset\Cancer\IMG (10).jpg,Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\Breast Cancer Dataset\Original Dataset\Cancer\IMG (104).jpg,Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\Breast Cancer Dataset\Original Dataset\Cancer\IMG (12).jpg,Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\Breast Cancer Dataset\Original Dataset\Cancer\IMG (94).jpg,Mammogram Mastery A Robust Dataset for Breast Cancer Detection and Medical Education\Breast Cancer Dataset\Original Dataset\Cancer\IMG (97).jpg}
Out[]=
Segundo desafío
In[]:=
(*Thiscodesnippetisbroken,trytofixit*)trainingCancerData=(ImageResize[ColorConvert[Import[#],"Grayscale"],600]&)/@RandomSample[examImagesCancer,125];trainingNoCancerData=(ImageResize[ColorConvert[Import[#],"Grayscale"],600]&)/@RandomSample[examImagesNoCancer,620];
Este código se basa en cinco funciones. La primer utilizada anteriormente es “RandomSample[...]”. Es empleada con examImagesCancer y con examImagesNoCancer, cuando se maneja con “examImagesCancer” se seleccionan 125 imágenes de ese mismo listado y al momento de aplicarse con “examImagesNoCancer” se seleccionan 620 imágenes de ese mismo listado.
La segunda función que se emplea es “(… &) /@ lista”, la cual es una pure function y significa que para cada archivo de imagen en la lista se debe de ejcutar un procesamiento.
La tercera función es “Import[#]” y esta lee el archivo de la imagen, este caso jpeg.
La cuarta función es “ColorConvert[…, “Grayscale”]” y convierte la imagen ya correctamente importada a una escala de grises.
La quinta función es “ImageResize[…, 600]” y su atribución es redimensionar la imagen a 600 píxeles manteniendo proporciones para que todas tengan un tamaño uniforme.
La segunda función que se emplea es “(… &) /@ lista”, la cual es una pure function y significa que para cada archivo de imagen en la lista se debe de ejcutar un procesamiento.
La tercera función es “Import[#]” y esta lee el archivo de la imagen, este caso jpeg.
La cuarta función es “ColorConvert[…, “Grayscale”]” y convierte la imagen ya correctamente importada a una escala de grises.
La quinta función es “ImageResize[…, 600]” y su atribución es redimensionar la imagen a 600 píxeles manteniendo proporciones para que todas tengan un tamaño uniforme.
In[]:=
Length[trainingCancerData]
Out[]=
125
In[]:=
Length[trainingNoCancerData]
Out[]=
620
Entrada 24
Este código autentiza la cantidad de imagenes que quedaron en las que sí tienen Cancer.
Salida 24
Verfica que el procesamiento de la entrada anterior a la 24 es correcta, porque hay 125 imágenes.
Entrada 25
Este código autentiza la cantidad de imagenes que quedaron en las que no tienen Cancer.
Salida 25
Verfica que el procesamiento es correcto, porque hay 620 imágenes.
Este código autentiza la cantidad de imagenes que quedaron en las que sí tienen Cancer.
Salida 24
Verfica que el procesamiento de la entrada anterior a la 24 es correcta, porque hay 125 imágenes.
Entrada 25
Este código autentiza la cantidad de imagenes que quedaron en las que no tienen Cancer.
Salida 25
Verfica que el procesamiento es correcto, porque hay 620 imágenes.
Tercer desafío:
In[]:=
cancerClassify=Classify[<|"No cancer"->trainingNoCancerData,"Cancer"->trainingCancerData|>]
En esta etapa utilizamos la función Classify para entrenar un modelo capaz de diferenciar imágenes de "Cancer" y "No cancer" a partir de los conjuntos trainingCancerData y trainingNoCancerData . Dado que no especificamos ningún método manualmente, Wolfram Language seleccionó de forma automática la opción que ofrecía el mejor desempeño para nuestro conjunto de imágenes . En este caso, el sistema eligió el método NearestNeighbors, un enfoque cuya efectividad radica en su simplicidad, pues clasifica nuevas imágenes comparándolas directamente con las muestras más similares del conjunto de entrenamiento . Gracias a esta estrategia directa y ligera, el modelo obtuvo un rendimiento superior frente a otros métodos evaluados internamente, lo que lo convierte en una opción adecuada y eficiente para nuestro problema de clasificación de imágenes .
Subir el modelo a la nube
Subir el modelo a la nube
Primero obtenemos las probabilidades que el clasificador asigna a cada categoría (“Cancer” y “No cancer”) al analizar la imagen de prueba. Luego usamos PieChart para representar visualmente estos valores, facilitando la interpretación del resultado de la clasificación.
El código define una función llamada mammographyExam que recibe una imagen de mamografía, la preprocesa y genera un diagnóstico utilizando un modelo de clasificación alojado en la nube . Primero, el módulo interno carga el clasificador desde Wolfram Cloud mediante CloudGet["cancerClassifier"] . Luego convierte la imagen a escala de grises, la redimensiona a 600 píxeles y obtiene las probabilidades de cada clase predicha por el modelo . Estas probabilidades se ordenan de mayor a menor y se organizan en una cuadrícula (Grid) que muestra la imagen original, el diagnóstico, y detalles del modelo . Se incluye un gráfico circular (PieChart) que representa visualmente las probabilidades por clase, con sus etiquetas respectivas . También se genera una etiqueta visual que combina el nombre de la clase con su probabilidad expresada como porcentaje, coloreándola de rojo si la clase principal es "Cancer", y de verde en caso contrario . Asimismo, la función muestra información técnica del modelo y un mapa de bordes (producto de aplicar GradientFilter) para resaltar contornos relevantes de la mamografía . Finalmente, todo el sistema se despliega como una aplicación web mediante CloudDeploy, utilizando un FormFunction que permite al usuario subir una imagen bajo el campo "mammography" . Se definen reglas de apariencia, un título con logotipos, una descripción explicativa y permisos públicos . El resultado es un objeto en la nube que ofrece un servicio automático de diagnóstico basado en IA a partir de imágenes mamográficas .
Conclusión:
Conclusión:
Referencias:
Referencias:
An Elementary Introduction to the Wolfram Language by Stephen Wolfram
https://www.wolfram.com/language/elementary-introduction/3rd-ed/
https://www.wolfram.com/language/elementary-introduction/3rd-ed/
Introduction to Machine learning
https : // www . wolfram . com/language/introduction - machine - learning/
https : // www . wolfram . com/language/introduction - machine - learning/

