cómo hacer un diagrama de Venn con Python

Share this Post Share to Facebook Share to Twitter Email This Pin This
Hay veces que en la escuela o en nuestro trabajo necesitamos hacer análisis con diagramas de Venn . 

Estos diagramas son muy utilizados en la parte de estadística y en la programación. El uso mas práctico en la programación es cuando generamos consultas en una base de datos y queremos obtener datos de varias tablas al mismo tiempo, en ocasiones queremos todos los datos que se unen en las tablas, hay veces que queremos saber los datos que no se unen entre las dos tablas y para poder representar esto de manera mas fácil utilizamos los diagramas de Venn.
Vamos a representar un ejemplo con 2 tablas en una base de datos, una tabla es estudiantes y otra son materias




Lo que une a estás 3  entidades es un que todos están en una clase por ejemplo hay 1 profesor da la materia matemáticas a 10 alumnos este enunciado representa la unión y en la imagen en el centro de los 3 círculos y la podemos describir como una Clase. La unión entre Estudiantes y Materias podría ser un Kardex, Calificaciones . La intersección entre Profesor y Estudiante, puede ser una lista de asistencia. La unión entre Profesor y Materia puede ser un contrato de clases por ciclo escolar. 

Es decir podemos representar o analizar datos de manera gráfica y ayudar a presentar la información de manera más amigable. 

Esta representación también nos sirve para Datascience donde podemos encontrar relación entre ciertas variables. Por ejemplo identificar a la persona para cubrir un puesto en base a todas sus aptitudes o en una análisis de venta identificar cual es nuestro nicho de mercado para cierto producto. 

En el caso de bases de datos, el tener claro esta relación nos puede ayudar a construir nuestro modelo entidad relación y también saber como vamos a generar nuestras consultas a la base de datos.

Diagramas de Venn con Python


Para poder crear estos diagramas en Python vamos a utilizar la librería matplotlib_venn https://pypi.org/project/matplotlib-venn/.



Primero hay que instalarla, recuerden ir al folder donde instalaron Python y desde una linea de comandos ejecutar pip install matplotlib_venn , o desde Jupyter en su notebook pueden hacerlo.

Vamos hacer el diagrama de Venn de 3 Dataset cada uno va a representar una materia y vamos a tener 3 columnas : Calificación, Genero, ID del estudiante

Primer data set df_A
Dataset df_B


Dataset df_C


Diagrama de Venn con 2 Dataset


Primero vamos hacer el ejemplo con la unión de 2 materias utilizando el df_A y df_B
El diagrama nos dice que entre las 2 materias solo hay en común un alumno. Les comparto el programa

import pandas as pd

import numpy as np

Math_A = pd.Series([76.2,58.4,67.6,56.2,61.4],index=['s1','s2','s3','s4','s5'])
Idiom_A = pd.Series([85.1,90.2,76.8,80.4,78.9],index=['s1','s2','s3','s4','s5'])
data = {'Student_Math': Math_A}
df_A = pd.DataFrame(data)
df_A['Gender'] = ['M','F','M','M','F']
df_A['ID'] = ['1','5','9','20','13']
print(df_A)
data = {'Student_Idiom': Idiom_A}
df_B = pd.DataFrame(data)
df_B['Gender'] = ['M','F','M','M','F']
df_B['ID'] = ['3','7','20','5','12']
print(df_B)
np.random.seed(100)
Chemestry_B = pd.Series(np.random.normal(75.0,12,5),index=['s1','s2','s3','s4','s5'],name = 'Student_Chemestry')

df_C =  pd.concat([Chemestry_B], axis=1)
df_C['Gender'] = ['F','F','F','M','M']
df_C['ID'] = ['4','10','15','2','13']
print(df_B)
from matplotlib_venn import venn3,venn2
from matplotlib import pyplot as plt
plt.figure(figsize=(4,4))
set1 = set(df_A['ID'])
set2 = set(df_B['ID'])


venn2([set1, set2], ('Math', 'Idiom'))
plt.show()

Ahora vamos hacer el diagrama de Venn con 3 materias



El diagrama nos dice que entre el Grupo 1 y 2, tienen un alumno en común, y entre el grupo 3 y grupo 1 hay 2 alumnos en común.
 
Les comparto un video de como se ve la ejecución del programa


Diagramas de Venn con Offices en Word o Power Point


Y si solo necesitas presentar la información de ciertos datos puedes hacer la imagen con las paqueterías de Office o de Google Suite.
Para Word, solo debes buscar en la barra el Menu Insert o Insertar y el icono de SmartArt

Después seleccionar en la sección de Relacion o Relations y ahí encontraras 4 formatos del diagrama de Venn


Y después puedes personalizar tu diagrama, seleccionando diferentes colores y colocando el texto para identificar tus categorías. 

Con Power Point son los mismos pasos Insert - SmartArt - Venn




Espero les sea de utilidad este post y nos compartan. A mi en lo personal me gusto mucho este post, porque fue mi primera vez utilizando esta librería, creo que tiene muchos usos.

cómo tener un teclado y mouse en tu Smar Tv

Share this Post Share to Facebook Share to Twitter Email This Pin This
Quizá igual que a mí se te hace molesto tener que utilizar el control remoto de tu Smart TV para buscar algún programa, video, película o tener que teclear algo seleccionado letra por letra. La verdad a mi me desespera y me cuesta trabajo hacerlo 👵

Yo encontré una forma de hacerlo más rápido y es conectando un teclado y mouse inalámbrico en nuestra Smart TV. 👌






Primero compramos un teclado y mouse inalámbrico ( conexión Bluetooth) que trabaja con un solo puerto USB para ambos dispositivos. Lo compramos en Walmart y costo casi $200.00 MXN. En Internet he visto varios de modelos pero cuestan en promedio 500 MXN. Yo les recomiendo que no gasten mas de eso.

Y lo único que hay que hacer es conectarlo a la TV en un puerto USB.
Y con ello puede utilizar el mouse para navegar en su TV y pueden escribir utilizando su teclado
Les comparto un vídeo para que vean como funciona 😜.

Espero a ustedes también les ayude está información y nos compartan.

cómo resolver ecuaciones lineales con Python

Share this Post Share to Facebook Share to Twitter Email This Pin This
Quizás se han preguntado cómo puedo resolver una ecuación utilizando Python. Primero es convertir nuestro sistema de ecuaciones a matrices y vectores es decir utilizar Álgebra lineal.

Entonces primer paso nuestra ecuación de ejemplo es:

3x + 2y -5z =8
2x-5y+3z =5
8y+9z =6

Esto convertido a Algebra Lineal se ve así:

[3,2,-5
 2,-5,3
0,8,9]

Vector de resultados de la ecuación
[8,5,6]

En el álgebra lineal tenemos varios métodos que podemos utilizar para resolver este tipo de ecuaciones ,estos métodos son :

  • Regla de Cramer
  • Gauss Jordan
  • Eliminación Gaussiana

En este post vamos hablar de la regla de Cramer la cual consiste en ir remplazando una columna por el vector de resultados y obtener la determinante de la matriz inicial y la matriz con el ventor . 

Ahora vamos a transformar estas reglas a un programa

Primero vamos a hacerlo de manera manual en el programa simulando los pasos
import numpy as np

#Cramer rules
matrix_l = np.array([[3,2,-5],
                   [2,-5,3],
                   [0,8,9]])

vector_b = np.array([8,5,6])
d0 = np.linalg.det(matrix_l)
print(d0)

matrix_2 =np.array([[8,2,-5],
                   [5,-5,3],
                   [6,8,9]])
d1 = np.linalg.det(matrix_2)
print(d1)

matrix_3 =np.array([[3,8,-5],
                   [2,5,3],
                   [0,6,9]])
d2 = np.linalg.det(matrix_3)
print(d2)

matrix_4 =np.array([[3,2,8],
                   [2,-5,5],
                   [0,8,6]])
d3 = np.linalg.det(matrix_4)
print(d3)

x1=d1/d0
x2=d2/d0
x3=d3/d0
print("result x1",x1)
print("result x2",x2)
print("result x3",x3)

Ahora validemos el resultado


Cómo podemos ver la solución del programa ,resuelve nuestro sistema de ecuaciones.

Ahora vamos hacer nuestro programa un poco más automático

def crammer(mat,vect):
    d = np.linalg.det(mat)
    
    mat1= np.array([vect,mat[:,1],mat[:,2]])
    mat2= np.array([mat[:,0],vect,mat[:,2]])
    mat3= np.array([mat[:,0],mat[:,1],vect])
    
    d1 = np.linalg.det(mat1)
    d2 = np.linalg.det(mat2)
    d3 = np.linalg.det(mat3)
    
    x1 =d1/d
    x2 =d2/d
    x3= d3/d
    
    print(x1,x2,x3)

(matrix_l,vector_b)

Les comparto la liga al video en nuestro canal de YouTube para ver la ejecución del programa


Espero les sea de utilidad y nos compartan. 
#programacionparatodos
#programarcobpython

Cómo hacer reconocimiento de imágenes

Share this Post Share to Facebook Share to Twitter Email This Pin This
Hola bienvenid@s al blog tenía mucho tiempo que no escribía y me da gusto compartirles algo nuevo.

En esta ocasión quiero platicarles de las herramientas que existen para poder realizar reconocimiento de imágenes por medio de Inteligencia Artificial.

Primero antes de ver un ejemplo les cuento un poco más que es el reconocimiento visual, es un proceso en qué una máquina puede clasificar una imagen, ahora esta imagen puede llegar a la máquina por medio de archivos, por medio de una cámara de un celular ,las cámaras montadas en un robot, por medio de un directorio en donde se almacenan documentos o incluso utilizando la cámara en un dron.  


Ejemplos de uso de está tecnología :
  • Identificar posibles inicios de incendios
  • Análisis de calidad en una línea de producción para saber si un artículo está en mal estado
  • En las redes sociales saber si los gifs, imágenes son positivos o negativos
  • Saber el estado de ánimo de una persona en un hospital
  • En la agricultura identificar una zona con inicios de plaga


Ahora si les comparto cuales son las tecnologías disponibles para poder utilizar reconocimiento de imágenes, todas estas plataformas cuentan con una opción de prueba o demo.

IBM tiene su plataforma de inteligencia artificial que es Watson Studio , en esta suite cuenta con la opción para hacer reconocimiento visual que se llama Visual recognition.



Amazon tiene su propia herramienta de reconocimiento de imágenes en AWS y se llama Amazon rekognition.
Google suite tiene Visión AI.

Otra opción para hacer reconocimiento de imágenes puedes hacerlo con Python, utilizando la librería OpenCV, primero hay que instalar en Anaconda nuestra librería Open CV en mi caso utilice pip install cv2

Yo seguí los paso de Shantnu Tiwari y utilizando el código

import cv2
import sys

# Get user supplied values
imagePath = sys.argv[1]
cascPath = "haarcascade_frontalface_default.xml"

# Create the haar cascade
faceCascade = cv2.CascadeClassifier(cascPath)

# Read the image
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Detect faces in the image
faces = faceCascade.detectMultiScale(
    gray,
    scaleFactor=1.1,
    minNeighbors=5,
    minSize=(30, 30),
    flags = cv2.CASCADE_SCALE_IMAGE #cv2.CV_HAAR_SCALE_IMAGE
)

print("Found {0} faces!".format(len(faces)))

# Draw a rectangle around the faces
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow("Faces found", image)
cv2.waitKey(0)

Para probarlo tome uno de Dua Lipa :)


Para ejecutar el programa


Después de ejecutar el programa , encontró 7 caras, lo que se me hizo extraño es que no encontró la cara de Dua Lipa, entonces estuve jugando con los parámetros

Después de mover algunos parámetros


Los parametros son:
scaleFactores el porcentaje en que se ira reduciendo la imagen 
minNeighborsIndica cuantos son los veicnos que puede tener cada objeto encontrado


minSizeIndica el tamaño minimo del objeto los que tengan menor tamaño seran ignorados en la busqueda
maxSizeEs el tamaño maximo que puede tener la imagen a buscar y los que excedan ese tamaño seran ignorados


Para poder saber mas acerca de la libreria Open CV les comparto la liga https://docs.opencv.org/3.4/d1/de5/classcv_1_1CascadeClassifier.html

Espero les sea de utilidad y nos compartan.

Timer en Excel o Timer en Google Chrome

Share this Post Share to Facebook Share to Twitter Email This Pin This

 En estos dos últimos dos años he recibido o dado muchos entrenamientos por videoconferencia y hay ocasiones que no es tan fácil controlar el tiempo de descanso o tiempo para alguna actividad porque en la misma reunión hay personas en diferentes zonas horarias.

Estuve pensando en algunas alternativas para poder utilizar un timer y que todos pudiéramos ver cuándo tiempo nos queda para un descanso o para realizar alguna actividad.

Hay varias opciones les comparto 3 que me gustaron:

1) En Google ya cuenta con una función de timer,la cuál se puede incluir al navegador o abrir en Google directo

2) Otra opción que se me ocurrió es utilizar una macro en Excel con timer,les comparto el código y como se ve 


el código


Así se ve cuando comienza a correr ,le puse 15 minutos y presione el botón de start timer ,si quieres detenerlo presionar stop timer y para reiniciar el contador utiliza el botón de reset.



3) pueden hacer una página web utilizando JavaScript ,en este blog tenemos un ejemplo con un valor fijo,podrían tomarlo como referencia y leer los datos de un campo y seguir el mismo programa

http://www.programacionparatodos.com/2021/03/javascript-para-crear-un-contador.html

Espero les sea de utilidad y nos compartan. 

#programacionparatodos

Qué es Otg y para que lo puedo utilizar?

Share this Post Share to Facebook Share to Twitter Email This Pin This
OTG o el nombre completo USB On-the-go ,es una funcionalidad de celulares o tableta  con sistema operativo Android que te permite conectar una cámara,una memoria externa tipo micro sd o una memoria USB,teclados usb,mouse USB,control de videojuegos o micrófonos o audífonos externos.

Cómo pueden saber si sus equipos soportan Otg, en el manual de especificaciones del dispositivo, pueden revisar si en la caja o manuales de su equipo tiene el logo de OTG.
Buscando en internet o por prueba y error.  Yo he probado el adaptador con un Xiaomi MI 11 y un Huawei P20 Lite. 


Cómo puedo conecta mi adaptador USB-C a mi celular

Para poder conectar dispositivos requieres comprar un adaptador de micro USB o USB tipo c de cuerdo a la entrada de cargador de tu celular a USB tipo A,o un adaptador con varias entradas.


Les dejo la liga de los adaptadores que compre 
  • Uno es solo el convertidor a usb que compre en Steren


Monitor portátil Asus HD

Share this Post Share to Facebook Share to Twitter Email This Pin This

 En estos días de Teletrabajo o de viajes de trabajo para visitar algún cliente en lo personal extraño tener mi monitor para poder ver en dos pantallas la información. Así que busque un monitor portátil que pudiera llevar conmigo y cumpliera las siguientes características:

  • Tamaño a mi me parece bien 15.6 pulgadas por que es algo que puedo transportar en mi misma mochila de la laptop
  • Peso, que fuera ligero por si hay que viajar en avión también hay restricción de peso
  • Calidad de la imagen, que tuviera buena definición
  • Precio que fuera algo entre un rango de 3000 y 5000 MXN
Después de ver varias opciones me decidí por un monitor de la marca Asus modelo MB169B+ este monitor es full HD, tiene entrada USB para conectarse y no utiliza un cargador adicional para la alimentación, lo cual me parece un plus porque no hay que preocuparse por otro cargador que igual ocupa mas espacio y peso. La liga para comprarlo en Amazon https://www.amazon.com.mx/dp/B00FE690DI/ref=cm_sw_r_wa_api_glt_i_HXA32FNAVP6EJZZ9SFTQ


Les comparto las imagen de como se ve una vez desempacado



Es cómodo para utilizarlo, no utiliza mucho espacio, viene con una funda para poder guardarlo, casi no pesa y el costó en Amazon fue de 3905 MXN , el tiempo de entrega fue de 3 días.

Si buscan más monitores o equipo de cómputo les comparto la liga  Monitores

Un punto en contra pero que fue fácil de solucionar es que compramos una base porque la funda con la que viene no sentimos fuera lo suficientemente resistente para el día a día y preferimos también darle mas ventilación, nos costo 299 MXN, les comparto igualmente el link https://www.amazon.com.mx/TECHVIDA-Refrigeraci%C3%B3n-Ajustables-Enfriamiento-Computadora/dp/B08G46PG5C/ref=sr_1_11?keywords=base+metalica+para+laptop&qid=1649175363&sprefix=base+metalica+para+l%2Caps%2C127&sr=8-11

 Espero les sea de utilidad y nos compartan.


Mi experiencia como mujer en el área de sistemas

Share this Post Share to Facebook Share to Twitter Email This Pin This
Hoy día de la mujer, les quiero compartir un poco mas acerca de como ha sido mi experiencia en el mundo de la tecnología. 

Como le hes platicado en otras publicaciones, empecé desde muy pequeña a conocer acerca del mundo de computación y la mayoría de personas que daban o tomaban cursos de computación eran hombres. Un primer curso al que fui, fue una curso que tomo mi mamá, nos llevo a mi hermana y a mi para acompañarla. Otros cursos que tome en mi adolescencia eran cursos para utilizar las paqueterías, aprender mas de computadoras, hacer mas pequeñas funciones en paqueterías o macros sencillas. Además durante la secundaria mis papás nos inscribieron en secundarias técnicas, lo cual me parece ahora como adulto una decisión muy inteligente para poder darnos mas herramientas para la vida laboral, yo en lo personal las recomiendo mucho, en mi caso estuve en el taller de computación y ahí tuve la oportunidad de tener una maestra que creo que de alguna forma me ayudo también a tener un modelo en esa área, incluso me impulso para participar en una competencia de programación, me ayudo hacer mi primer proyecto, entender lo que era un prototipo, como desarrollarlo, como probarlo, como presentarlo. 
Mas adelanté en mis años de prepa o high scool, estudie en un bachillerato tecnológico pero en esta ocasión elegí una especialidad en electrónica, primer gran choque todo mi salón eran hombres, sinceramente puedo decir que al principio fue complicado porque es un ambiente diferente, luego era una persona muy tímida que le costaba acomodarse, bueno pero después de algunos meses de estar juntos, de trabajar en equipo, muchos de ellos me comenzaron a verme como su hermana y me cuidaban, me ayudaban, me explicaba cosas que yo no entendí muy bien, mis profesores y nuestro asesor el ingeniero Esteban, también fueron de gran apoyo me ayudaron a sentirme como parte del grupo. Jugábamos fútbol juntos, salíamos todos, varios de ellos siguen siendo de mis mejores amigos. Al final de esa carrera tuve muchos aprendizajes tanto en lo académico como en lo personal. Otra gran suceso al finalizar mi carrera técnica tenia que hacer un servicio social y practicas profesionales, digamos mi primer acercamiento a un trabajo formal. 
Durante mis practicas tuve la oportunidad de trabajar con una gran persona que me ayudo dándome la oportunidad de trabajar en su negocio, me toco enfrentarme a un trabajo en mostrador, entender y manejar sistemas, trabajar en un equipo multigenero, multiedad. Una gran experiencia y él me apoyo durante toda la Universidad para trabajar y estudiar al mismo tiempo, me brindo su confianza para comenzar a dar soporte a computadoras, instalar paquetería, ayudar con las actualizaciones de los equipos de la tienda, le agradezco mucho a Megaelectronica y a Don Enrique y su familia. 
Después durante la universidad estudie ingeniería en ciencias de la computación, cuando llegue al salón y vi que era un grupo con mas mujeres me dio gusto. No recuerdo exactamente que porcentaje yo creo que un 30% éramos mujeres. De las cuales yo creo que el 60% nos graduamos de la carrera.
En mi vida laboral he podido trabajar siempre en algo relacionado al área de tecnología y desarrollo de software, la mayoría de mis compañeros han sido hombres, si cabe mencionar que he encontrado pocas mujeres trabajando en equipos de IT, aunque no creo que sea por un tema de género, si no por encontrar personas con el perfil adecuado. Mis compañeros siempre me han ayudado y hemos trabajado en equipo. 
Creo que es importante compartirles esto pata que ustedes como mujeres se animen a incursionar en el mundo del desarrollo de Software o en tecnología, redes, ciberseguridad entre otras disciplinas h. Hombres motiven a sus familiares y amigas hacerlo, en mi vida como lo mencione siempre he contado con personas que me han apoyado y confiado en mi y me han brindado oportunidades ojala ustedes puedan ser esas personas para alguien mas. 
He tenido oportunidad de participar como audiencia en foros y conferencias enfocados a este tema, donde es importante que más mujeres incursionen en este mundo, ya que hay mucha demanda de pociones de IT, que también existan mujeres lideres en esta área y esto no es solo por un tema de igualdad de género, si no también por un tema de crecimiento de diversidad en las empresas, un equipo diferente siempre ayuda a crear soluciones mas completas, porque se complementan diferentes puntos de vista. 

La importancia de los Motores en nuestra vidas diarias y la industria

Share this Post Share to Facebook Share to Twitter Email This Pin This
Cuándo ven un motor como en la imagen ¿Qué ideas se les viene a la mente? 




Hace algunos años tuve la oportunidad de escuchar a un empresario hablar acerca de motores y el decía que en 2030 esperaba que ya la industria estuviera más automatizada o robotizada y para ello se requerirían motores ,muchos motores.

Mencionaba que habría más desigualdad en las clases sociales ,porque se necesitaría más personas preparadas en ingeniería y si el acceso a la educación era complicado dejaría a pocas personas con mejor oportunidad de desarrollo. Comentaba que era necesario dar foco y hacer cambios en las carreras del futuro próximo. Creo que estando en el año 2022 sus palabras tienen mucha razón y son más reales cada día. He escuchado y leído acerca de que hay muchas vacantes abiertas porque no hay personas que cubran el perfil y esto puede ser o porque no hay interés en esa área , o porque no hay un modelo de educación para poder preparar a las personas para estos puestos. Dejo el punto en la mesa para que sea algo que lo personal o en lo profesional lo desarrollemos.

El tema de automatizar y de digitalizar el mundo ha causado cambios por ejemplo en la compra de productos del uso diario, lo que me llevo a reflexionar en este año 2022 después de dos años de pandemia cómo es que ha crecido la demanda de tecnología y como ha cambiado nuestras vidas. Me tomé a la tarea de contar cuántos motores utilizo en un mi vida:

1) cepillo de dientes eléctrico
2) cepillo para la cara
3) auto (muchos motores ,el motor principal, los motores de las ventanas, los motores del aire acondicionado)
4) microondas (por lo menos un motor para mover el plato)
5) lavadora (varios motores no se si solo uno principal)
6) el teclado en mi celular (también es un motor)
7) en los televisores
8) en los ventiladores
9) en las laptops
10) en cámaras de vigilancia
11) caminadora 
12) impresora 
13) licuadora
14) secadora de cabello
15) ventilador
16) cortadora de pasto eléctrica
17) bomba hidráulica para almacenar agua en un tanque 
18) motor en refrigerador por ejemplo el compresor

Todo este listado me da una idea de como ha cambiado mi uso de algunas herramientas de cómo lo hacía hace dos años de manera manual a manera automática, los reto hacer el mismo ejercicio para saber cuántos motores utilizan en su día a día y como ha cambiado su vida, les comparto la liga de una encuesta de motores .

Otro punto que quiero resaltar a nivel industria es que estamos en un cambio de como hacemos las cosas donde lo que se busca es automatizar más los procesos, el uso de IoT e Inteligencia Artificial también requiere motores un claro ejemplo es la condición autónoma en vehículos . Esto sin duda requiere más motores para alcanzar procesos más eficientes y autónomos, lo que hace regresar a la encuesta que les compartí, porque la mayoría de las personas relaciona los motores con los autos. Aunque ya hace muchos años la automatización ha iniciado pero ahora esta siendo mas rápido la implementación y que quizá no sea hasta 2030 donde el uso de los motores sea tan rápido. 

En el ámbito industrial sin duda habrá mas cambios, se habla de que muchos proveedores automotrices desaparecerán o evolucionaran o incluso algunos proveedores no enfocados a la industria automotriz comenzaran a tener una línea de negocio para lo automotriz.
  

#motores
#automatizacion

Maratón IBM 2021 - Top 100 Desarrolladores Latinoamerica

Share this Post Share to Facebook Share to Twitter Email This Pin This

 Este 2021 IBM lanzo su competencia de la Maratona, esta competencia la ha hecho desde 2019 , en 2020 tuve oportunidad de participar si quieres saber mas acerca de esa competencia te comparto la liga donde platico mi experiencia Maraton 2020. Pero en este post quiero compartirles como viví esta experiencia del Maratón IBM 2021.




#MaratonDev

La convocatoria la lanzaron el Septiembre 2021 para ; Brasil, Chile, Colombia, Ecuador, México, Perú, Uruguay y Venezuela. Las inscripciones terminaron el 3 de Diciembre de 2021 . Esta ocasión los desafíos fueron 5 para determinar los 100 mejores quienes participarían a la ultima sesión para elegir a los 5 mejores. Los premios fueron: Los ganadores recibirán un voucher por la cantidad de US$ 1,600.00 para cambiar por viajes. IBM Consulting América Latina ofrecera a los 10 mejores ofertas de empleo como Application Developer*. Premios en cada desafío.

Hubo una semana de entrenamientos, les comparto la liga de los temas y URL para verlos https://maratona.dev/doc/entrenamientos.pdf. Yo solo pude ver los 2 primeros.

Cada desafío tenia una bonificación adicional del 10% si se entregaba la primer semana de haberse lanzado el desafío. (Esta vez no olvide enviarlos)

Les platico un poco más acerca de mi experiencia en cada desafío y les comparto la liga https://maratona.dev/es/challenges , aun están disponibles aunque no participes en el maratón, son buenos para aprender y practicar. Tambien estan disponibles en github https://github.com/maratonadev/.

Desafío 1

El primer desafío de Bantotal fue preparar un modelo supervisado, para predecir el riesgo de dar un crédito a una persona. Cuando hablamos de modelos supervisados, quiere decir que son análisis de inteligencia artificial que se toma una muestra de información y en base a los resultados que se tienen en esa muestra se analiza se hace una separación de datos y se les aplica un algoritmo para dar un resultado, la calidad o porcentaje de asertividad se mide para saber que tan preciso es versus los datos originales, por eso se dice que es supervisado, porque ya sabemos el resultado y se puede comparar con el resultado de nuestro algoritmo. El modelo utilizado en este caso fue de DecissionTreeClassifier y se nos compartió un notebook de Jupiter para completar el desafío. Aquí tuve el puesto 97° :) y fui una de las pocas Mexicanas, la verdad es que la mayoría (67%) fueron brasileños.

Mi estrategia en este tipo de clasificadores es buscar las variables que tengan más correlación y en base a esas variables hacer el modelo de entrenamiento. Para ello utilice unas función de pandas para generar la correlación y graficarla  loans.corr(method = 'pearson').style.background_gradient(cmap='coolwarm')

Después de identificar las variables mas importantes ahora si entrene a mi modelo 


Desafío 2

El desafío 2 de QUANAM fue acerca de como utilizar herramientas de IoT recibiendo información de dispositivos , está información llegaba en formato JSON y se te tenía que hacer una función que validar estos datos recibidos y dependiendo de los parámetros recibidos regresara una alarma igual en formato JSON y hacer un modelo de regresión líneal para predecir el ritmo cardíaco de una persona, esto igual en base a unos datos que se tenían que recibir para poder tener la muestra de valores y después en base a eso hacer una predicción. En lo personal este desafío fue mi favorito me gustó mucho aprender acerca de estás tecnologías y como implementarlo con Inteligencia Artificial. En este desafío no hubo un Jupiter de referencia, por lo que cada participante teníamos que construir nuestra solución. En este Desafío mi puesto fue 107°. 

Mi estrategia en este desafío fue primero hacer la función, porque era la primera vez que utilizaba esa tecnología, en cuanto al desarrollo era una función de Python con datos de entrada y datos de salida. Aquí me sirvió mucho el video que nos compartió Josefina Casanova de IBM con un ejemplo de como hacerlo. 

URL del vídeo Cloud Functions | Maratón Behind the Code 2021



Después arme mi modelo para poder predecir el ritmo cardiaco de una persona, pero lo primero era leer los datos desde los sensores (NO relacionado con el requerimiento 1 del desafío) , bueno fue lo mas tardado leer los datos de otra nueva tecnología MQTT . Tuve que leer y ver videos en Youtube para entender como conectarme y luego pensar como leer los datos obtenidos.

Después de obtener las mediciones, entonces hice mi modelo , igual que el desafio1 identifique cuales eran las mejores variables o las mas relaciones y con ellas prepare mi modelo. 


Desafío 3

El desafío 3 de la empresa GTF fue acerca de utilizar el modelo de aprendizaje Apriori para poder regresar propuestas  o recomendaciones de productos para un cliente, lo bueno es que había tomado un curso de ese método un mes antes lo cual me ayudo a no tardarme tanto en entender el concepto. El modelo de Apriori es la primer vez que lo utilizo y que lo aplicó a un proyecto, es un modelo muy interesante y también me permitió hacer desarrollo de un programa utilizando mis conocimientos de Pandas en Python. Fue un ejercicio complicado de desarrollar para poder enviar la respuesta. En este desafío no hubo un Jupiter de referencia, por lo que cada participante teníamos que construir nuestra solución, incluso fue un algoritmo nuevo que no se utilizo en el maratón del año pasado (2020), lo complicado fue seleccionar la mejor recomendación para los usuarios, porque había que desarrollar ciclos y validación de datos y funciones de Panda para dar recomendación de servicios que no tuvieran los clientes. Aquí quede en el lugar 121°. Les comparto unas imágenes de mi Notebook. Si les gustaría ver un video o que los comparta en Github por favor dejen sus comentarios. 








Desafío 4

En este desafío teníamos que construir un chatbot o un asistente virtual utilizando Watson Assistant, para identificar ayuda a un usuario y enviarle unos drivers para ciertos modelos de impresoras, en caso de no encontrar el modelo de impresora en la lista del desafío o si era un soporte diferente a impresoras se debía enviar a un asistente humano utilizando un API que debían enviarse datos y regresaba una respuesta en formato JSON. Suena sencillo, pero si es tu primer chatbot no estaba tan sencillo. Este desafío fue patrocinado por Algar Tech. Para este desafío obtuve el lugar 26°. Estoy muy contenta con este puesto, porque me demore en encontrar la mejor lógica para el chatbot y aprendí como utilizar Webhook, esto te permite hacer el llamado de una función o una API, en esta parte me demore entender la lógica y vi un video de 10 minutos como en una hora hasta entendí como funcionaba. 

Mi estrategia fue utilizar como referencia mi chatbot del Maraton 2020 y sobre ese desarrollar mi nuevo chat.
Mis Intent fueron

Mis Entities
Mi Dialogo




Si tienen dudas o quieren que haga un video para explicarles, por favor dejen sus comentarios. 


Desafío 5

En este desafío era acerca de una clasificación binaria como el primer desafío, lo cual estuvo muy bien, porque el desafío 4 y 5 se debían entregar en la misma semana. Este modelo tuve una precisión del 76% y F1 de .59, trate de mejorarlo pero ya no tenía mas tiempo para poder entregarlo. Este desafío fue patrocinado por Sonda. Mi ultima entrega fue el 6 de Diciembre de 2021 y este mismo día comenzaron a dar resultados del Desafío 1. Para este desafío obtuve el puesto 117°. En este clasificador adicional hacer el análisis para identificar las variables con mayor correlación había que entregar el resultado con un texto y no solo con uno o cero, lo cual si era hacer cambios en los datos del dataframe con Pandas.

Ranking TOP 100


El 14 de Diciembre dieron resultados del ranking general, yo quede en el puesto 78° (la ultima de México en estos 100), cuando me entere quede en shock, no podía creerlo, estar en este lugar me permitió participar en el último desafío.



Desafío final

El desafío Final fuel el 18 de Diciembre de 2021 , el problema a resolver consistía en crear un chatbot en Watson Assistant que te devolviera la temperatura máxima, mínima, la dirección y velocidad del viento, la evaporización de ciertos cultivos , haciendo uso de una API de Weather Channel por medio de una función en Watson y después de eso publicar la solución en un OpenShift. Lamentablemente no pude entregarlo, me tarde mucho haciendo la función y probarla en el chat, pero para mi fue un logro porque el hecho de hacer un chatbot, conectarme por medio de un API y separar los datos del archivo  JSON y poder leerlo y mostrarlo es algo que no hubiera hecho hace dos años, el poder invocarlos desde el Dialogo del chat y pasarle mis variables. La verdad fue un desafío muy completo y divertido, me gusto porque pude hacerlo aunque no concluirlo, pero ahora se que debo mejorar para el próximo año y aprender mas de Openshift y kubernetes. Les comparto la liga del desafio https://github.com/maratonadev/desafio-6-2021/blob/main/doc/instructions/es.md y les comparto la liga de mi chatbot  https://web-chat.global.assistant.watson.cloud.ibm.com/preview.html?region=us-south&integrationID=68d90986-8e19-47d3-8131-02ecdec70f9f&serviceInstanceID=7b4ecb62-91ad-4b9d-8aa0-b5a5ff5230ba


Los mejores 5 del concurso fueron 4 Brasileños y una chica de Venezuela.
Les comparto la liga del evento de premiación Maratón Behind the Code 2021 - Grand Final

Un poco de numerología, de los 100 mejores de Latinoamérica:
  • Total de participantes inscritos 100 mil
  • 62 Brasileños, entre ellos los 3 primeros lugares  y el 5° del desafío final
  • Argentina tuvo 9 lugares en el top 100, con el puesto 5° Ariel Sperduti
  • De Perú 7 puestos, de ellos el mejor lugar Hans Marlon Hidalgo Alta puesto 10°, el año pasado en la Maratón obtuvo el puesto 2° de Hispanoamérica 
  • De México 7 Top 100, Elizabeth Rodríguez Sánchez  fue la mejor represéntate de México quedando en el puesto  18° , el año pasado estuvo también en el Top 100 de Hispanoamerica 
  • Venezuela 4 en los 100 primeros y de ellos María Victoria ocupo el cuarto lugar en el top 5) y en el top 100 Peterson Flemm ocupo el puesto 4
  • Chile 4 , Eric Santana Vasquez fue el mejor Chileno en el puesto 12
  • Colombia con 3 personas, su mejor puesto fue Julián Esteban Londoño en el lugar 39
  • Ecuador 3, mejor puesto lugar 40 logrado por Jonathan Herrera

Desde mi perspectiva el nivel de la competencia de este año fue más alta que el año pasado (2020). Creo que es para personas que ya tienen conocimientos de programación, experiencia en Python, machine learning, para principiantes creo que sería más complicado pero si es posible si le dedican tiempo para estudiar y leer. El maratón es un espacio para poder aprender nuevas tecnologías, practicar, conocer más las herramientas de IBM, conocer personas con los mismos intereses. Conocer mas acerca de IBM. Me gusta muchos este esquema de competencia porque:

  • Es digital
  • Es individual, pero se crea sinergia entre los competidores y genera networking
  • Son más de un desafío y de temas diferentes y prácticos, es decir son aplicables en la vida profesional
  • Promueve la tecnología y no solo es una competencia, sino que también sirve como entrenamiento y te dan un certificado
  • No hay limite de edad para participar , solo el mínimo requerido es tener 18 años
Quiero reconocer a IBM, a IT Media, a los patrocinadores por realizar esta competencia, no es algo sencillo tener que coordinar todas las actividades, preparar los desafíos, organizarnos a los competidores, estar al pendientes de nuestras dudas y apoyarnos. 

Nos vemos en el maratón 2022, espero mejorar y poder entregar el desafío final, mi objetivo del 2020 a 2021 fue entrar a los 100 mejores y gracias a Dios lo logre, lo que  noto es que no soy la única, los que hemos participado antes cada año nos ponemos nuevos retos personales lo que hace que la competencia sea mas reñida

Espero les sirva mi experiencia para animarse a inscribirse y para aprender de nuevas tecnologías en el próximo maratón o hackathons. Además de que puedan conocer a los mejores desarrolladores de Latinoamérica.