La organización de tu entorno es clave para un desarrollo eficiente. Siempre que empieces un nuevo proyecto, especialmente en Machine Learning, es fundamental estructurar adecuadamente tus carpetas y archivos. Una sugerencia práctica es crear una carpeta llamada "in" para documentos de entrada como texto e imágenes. Luego, dentro de la raíz de tu proyecto, agrega un directorio "out" donde guardarás las exportaciones y resultados como modelos generados o gráficos. Además, una carpeta "models" te ayudará a mantener organizados tus modelos probados. De esta forma, evitas que todo esté revuelto y puedes gestionar fácilmente los resultados.
¿Qué archivos iniciales son necesarios?
Al desarrollarse un proyecto, varios archivos son necesarios:
main.py: Aquí implementas todo el flujo principal de Machine Learning.
block.py: Se encarga solo de la carga de elementos y archivos.
utils.py: Almacena métodos reutilizables a lo largo del proceso.
models.py: Abarca toda la parte del Machine Learning como tal.
¿Cómo crear una clase en Python?
Para inicializar una clase en Python, se utiliza la instrucción class. Los atributos y métodos dentro de la clase permiten reutilizar el código sin necesidad de reescribirlo.
Ventaja de usar clases: Facilitan la actualización y modificación del código, manteniendo el flujo de ejecución intacto. Si un cliente cambia de base de datos, solo necesitas cambiar un método.
¿Cómo reutilizar métodos en Python?
Tener métodos en un archivo de utilidades simplifica el proceso de escalar y manipular datos. Por ejemplo, funciones para escalar datos o dividir conjuntos son esenciales.
defsplit_data(dataset, target_column, drop_columns): X = dataset.drop(columns=drop_columns) y = dataset[target_column]return X, y
Esta forma de organización te permite modificar y mejorar funciones sin afectar el flujo principal del programa. Además, cuando es necesario cargar datos, simplemente puedes llamarlos a través de la clase y métodos predefinidos.
¿Cómo ejecutar el código de forma modular?
Una vez organizada la estructura, el main.py puede cargar datos de un CSV usando métodos definidos en utils.py. Asegúrate de importar librerías necesarias como Pandas para evitar errores.
import pandas as pd
from utils import Utiles
util = Utiles()data = util.load_from_csv('in/felicidad.csv')
Esto incrementa la flexibilidad de tu código, permitiéndote adaptarlo a cambios futuros sin complicaciones. ¡Sigue aprendiendo y aprovechando las ventajas del código modular!
Al inicio fue muy raro trabajar con los datasets desde el editor de código y no desde jupyter, pero ahora todo tiene sentido. Se ve excelente la forma de terminar este curso.
Total, me gusto bastante el enfoque en este caso
El profesor, realmente se tomo el tiempo para dividir las etapas de conocimiento, al menos yo noto el conocimiento de mi antes y despues.
Excelente clase, ojalá poder dar likes a las clases que más te gustan 😅
Muy buena es así!
Resumen
Revisión de nuestra arquitectura de código
Ahora vamos a convertir los scripts que tenemos en un código que sea modular y extensible con facilidad para que nuestra arquitectura pueda salir a producción de una manera exitosa.
Una estructura de carpetas que sea organizada para poder gestionar todo lo que vas a necesitar en cualquier proceso de Machine Learning.
Carpetas:
in: Carpeta que contendrá archivos de entrada, datos que alimentarán a nuestros modelos.
out: Carpeta que contendrá el resultado de la exportacion de nuestros modelos, visualizaciones, datos en excel o csv, etc.
models: Carpeta que contedrá a los modelos.
Archivos:
Cada clase será un archivo que tenga su propia responsabilidad y se encargue específicamente de una tareas concreta.
: Metodo principal de ejecucion. Ejecutará todo el flujo de datos. Se encargaría de controlar el flujo de todo el código de principio a fin.
: Archivo que se encarga de cargar los datos desde in o una DB
: Todos los metodos que se reutilizaran una y otra vez.
: Irá toda la parte de ML como tal.
.
.
Repositorio del Proyecto
Excelente resumen
Este curso aunque ya tiene unos 4 años (sabemos como transcurre el tiempo de rápido en tecnología) es de los mejores que he tomado aquí. Con ningún otro hasta ahora había tocado el tema de la puesta en producción 🥇🚀🔥🤖🦾
Muy buena clase. Muchas gracias
Para aquellos que utilizan Jupyter Notebooks desde Visual Studio Code, pueden importar cualquier notebook (.ipynb) , instalando el módulo de python import_ipynb
El código para llamar Utils sería:
importimport_ipynbfrom utils importUtils
Lo pueden instalar con pip
!pip install import_ipynb
¡Saludos!👑
En cuanto a mysql creo que no seria un gran problema, con mysql workbench puedes convertir tus archivos .sql a archivos .csv.
Si, pero solo es un caso hipotético.
nice amigo.....me pareció excelente incorporar poo en proyectos de data science
Esta clase es realmenete brillante, el potencial de este procedimiento me tiene sorprendido!!
La arquitectura de código, a menudo conocida como arquitectura de software, se refiere a la estructura y organización del código fuente de un programa o sistema de software. Una arquitectura de código bien diseñada es esencial para desarrollar software que sea mantenible, escalable, flexible y fácil de entender
Al ver esta clase me dio gusto haber llevado POO en la Uni por 6 meses.
Pero, no se preocupen, aquí en Platzi también se puede aprender:
odio POO con todas mis fuerzas, pero le da un orden con gracia y gozo a los proyectis
La única desventaja que puede tener trabajar con CLASES en proyectos pequeños es que la implementación de clases podría aumentar la cantidad de código necesario para realizar tareas relativamente simples. En proyectos más pequeños, donde la funcionalidad adicional proporcionada por las clases puede no ser necesaria, el uso de este enfoque puede parecer excesivo y agregar una sobrecarga en términos de complejidad y cantidad de líneas de código.
En tales casos, una implementación más sencilla y procedural podría ser suficiente para cumplir con los objetivos del proyecto, sin la necesidad de introducir la estructura adicional que conlleva el uso de clases.
Es importante tener en cuenta que esta desventaja es específica de proyectos pequeños o simples, ya que en proyectos más grandes y complejos, la programación orientada a objetos y el uso de clases se vuelve más valiosa para lograr la modularidad, la reutilización de código y un diseño más mantenible y escalable. La elección de utilizar clases o no, dependerá de la naturaleza y alcance del proyecto, así como de las necesidades y preferencias del equipo de desarrollo.
Me encantan las clases en la que se habla de POO. Para dejar más claro todo dejo los principales conceptos aquí.
1) Herencia: La herencia es un mecanismo de la POO que permite que una clase (clase hija o subclase) herede propiedades y métodos de otra clase (clase padre o superclase). Esto permite reutilizar el código existente sin necesidad de reescribirlo, y facilita la creación de jerarquías de clases.
2) Encapsulamiento: El encapsulamiento es la técnica de agrupar datos (atributos) y funciones (métodos) dentro de una misma clase y restringir el acceso directo a algunos de los componentes de un objeto. Esto se hace para proteger los datos y asegurar que solo se puedan modificar de forma controlada a través de métodos especiales llamados "getters" y "setters".
3) Polimorfismo: El polimorfismo es la capacidad de un objeto de tomar diferentes formas. En POO, permite que un mismo método funcione de diferentes maneras, dependiendo del objeto que lo llame. Un mismo nombre de método puede tener diferentes comportamientos en distintas clases relacionadas por herencia.
4) Abstracción: La abstracción es el proceso de simplificar un sistema complejo ocultando los detalles innecesarios y mostrando solo las funcionalidades esenciales. En POO, se logra mediante el uso de clases abstractas o interfaces que definen comportamientos que luego serán implementados por otras clases.
La clase se centra en la creación de una arquitectura de código modular y organizada para salir a producción en proyectos de Machine Learning con scikit-learn. Se sugieren estructuras de carpetas para gestionar datos, resultados y modelos. Se discuten archivos clave como main.py, utils.py, y models.py, cada uno con funciones específicas para facilitar la reutilización y mantenimiento del código. El enfoque se orienta a mantener un flujo de trabajo limpio y eficiente, permitiendo ajustes sin alterar la lógica principal.
Esta clase fue buenisima y se complementa muy bien con lo visto en el curso de POO del principio
👍
Recuerden que vimos algo similar para la gente que lo hace en google colar, deep note o jupiter en el curos de manejo de datos faltantes.
%run(LADIRECCIONDENUESTROARCHIVO)#ejemplo si tenemos nuentreo archivo .ipynb en la misma carpeta
%run pandas-missing-extension.ipynb
asi que se puede hacer lo mismo en google colap, eso si , el modulo que ustedes vayan a crear es mejor que cuente con un decorador para facilitar la busqueda del metodo que necesitan.