lunes, 27 de abril de 2026

¿Quieres dominar Scikit-Learn con un caso real? 馃殺馃


El dataset del Titanic es el "Hola Mundo" del Machine Learning, pero pocos lo abordan con un flujo de trabajo profesional. Acabo de publicar en mi canal de YouTube una clase donde resolvemos este ejercicio de principio a fin.

No nos limitamos a "entrenar un modelo"; profundizamos en lo que marca la diferencia: ✅ Exploraci贸n y limpieza de datos real. ✅ Ingenier铆a de variables (Feature Selection). ✅ Evaluaci贸n del modelo y m茅tricas de supervivencia.

Si est谩s prepar谩ndote para trabajar en Ciencia de Datos, este tipo de proyectos pr谩cticos son los que construyen un portfolio s贸lido.

馃摵 Mira el ejercicio completo aqu铆: https://youtu.be/C2iHKYwVNzU

¡Suscr铆bete para seguir aprendiendo Machine Learning paso a paso!




viernes, 10 de abril de 2026

¡Domina la eficiencia con Funciones Generadoras y yield! 馃馃捑

Seguimos optimizando c贸mo manejas grandes vol煤menes de datos. Ya vimos las List Comprehensions (creaci贸n r谩pida) y las Generator Expressions (ahorro de memoria). Es el momento de llevar ese ahorro a tus propias funciones.

¿Sab铆as que una funci贸n est谩ndar calcula todos los resultados, los guarda en una lista en la RAM y luego te los devuelve? Si la lista es enorme, tu programa puede colapsar por falta de memoria. Mira este contraste visual: import sys # ❌ FUNCI脫N EST脕NDAR (Guarda todo en RAM) def cuadrado_lista(n): resultado = [] for i in range(n): resultado.append(i * i) return resultado # Devuelve la lista completa n = 10_000_000 # 10 millones p1_lista = cuadrado_lista(n) #print(p1_lista) # ¡Cuidado si lo imprimes! print(f"RAM Lista (est谩ndar): {sys.getsizeof(p1_lista) / 1024 / 1024:.2f} MB") # Salida: ~80-90 MB (dependiendo de tu arquitectura) La alternativa Pythonic es usar una Funci贸n Generadora. En lugar de un return final, usas la palabra clave yield dentro de un bucle. yield pausa la ejecuci贸n, devuelve el valor actual y "recuerda" el estado para continuar justo donde se qued贸 la pr贸xima vez que se lo pidas con next(). # ✅ FUNCI脫N GENERADORA (Calcula bajo demanda ✨) def cuadrado_generador(n): for i in range(n): yield i * i # Devuelve el valor, pausa y recuerda estado p2_gen = cuadrado_generador(n) # No calcula nada a煤n #print(p2_gen) # Salida: <generator object...> print(f"RAM Objeto Generador: {sys.getsizeof(p2_gen)} bytes") # Salida: ~100-200 bytes (¡Pr谩cticamente nada!) ¿Por qu茅 usar yield y Funciones Generadoras? Consumo de RAM 铆nfimo: Procesas flujos de datos gigabytes o infinitos sin saturar la memoria, ya que solo guardas el estado actual de la funci贸n. C谩lculo perezoso (Lazy Evaluation): Ideal para procesar archivos l铆nea por l铆nea, data streams, o cuando solo necesitas los primeros resultados de una b煤squeda compleja. Encadenamiento elegante: Puedes crear pipelines de datos encadenando generadores para transformaciones eficientes. ¡Deja de acumular datos y empieza a fluir con ellos usando yield! 馃殌馃捑 M谩s trucos de rendimiento y buenas pr谩cticas aqu铆 馃憞 馃帴 https://www.youtube.com/@josecodetech/




martes, 7 de abril de 2026

Programacion orientada a objetos con Python

 Hasta ahora le dec铆amos a Python: "haz esto, imprime aquello". Hoy vamos a cambiar las reglas del juego. 馃殌


Acabo de publicar una de las clases m谩s importantes del curso de Python: Programaci贸n Orientada a Objetos (POO). Si quieres crear aplicaciones robustas o videojuegos, necesitas dominar este concepto.

En este v铆deo te explico de forma s煤per visual:
馃彮 Qu茅 es una Clase (El molde o plano de la f谩brica).
馃 Qu茅 es un Objeto (El robot que nace de ese molde).
馃 C贸mo funciona el m茅todo __init__ y la palabra self.

Pasa de escribir simples instrucciones a crear entidades con vida propia y caracter铆sticas 煤nicas.

馃帴 Tienes la clase completa y paso a paso aqu铆:

¿Te animas a crear tu primera clase "Mascota" o "Coche" despu茅s de ver el v铆deo? ¡Te leo en los comentarios! 馃憞