Aprender los conceptos clave

1

Procesamiento de Datos con Scikit-Learn para Machine Learning

2

Aprendizaje Supervisado: Datos y Observación

3

Modelos de Clasificación y Regresión con Scikit-learn

4

Matemáticas clave para dominar Machine Learning

Iniciar un proyecto con sklearn

5

Configuración Avanzada de Entornos de Desarrollo en Visual Studio Code

6

Verificación de Librerías para Desarrollo en Python

7

Análisis de Datos para la Felicidad y Salud Cardiaca

Optimización de features

8

Elementos Clave para Mejorar Modelos de Machine Learning

9

Reducción de Dimensionalidad: Análisis de Componentes Principales

10

Optimización de Modelos en Python: Uso de PCA y Regresión Logística

11

Clasificación Binaria con PCA y Regresión Logística

12

Análisis de Kernel: Modelos de Clasificación Avanzada

13

Regularización en Machine Learning: Lasso y Ridge

14

Regularización: Lasso y Ridge para predicción efectiva

15

Regresión Lineal: Minimización de Pérdidas y Coeficientes

16

Regularización ElasticNet: Combinando Lasso y Ridge en Scikit-learn

Regresiones robustas

17

Identificación de datos atípicos en análisis estadístico

18

Regresiones robustas: técnicas para manejar valores atípicos

19

Regresión Lineal y Máquinas de Soporte: Lidando con Datos Corruptos

20

Automatización de Código para Modelos Predictivos en Python

Métodos de ensamble aplicados a clasificación

21

Esamblaje de Modelos de Machine Learning: Bagging y Boosting

22

Clasificación Binaria con Bagging Classifier en Scikit-Learn

23

Implementación de métodos de ensamble en Python

24

Clasificación con Gradient Boosting en Datos de Enfermedades Cardíacas

Clustering

25

Agrupamiento de Datos: Clustering No Supervisado

26

"Algoritmos de Clustering: Agrupación de Datos con K-Means"

27

Agrupamiento de Datos Usando MeanShift en Python

Optimización paramétrica

28

Validación Cruzada en Modelos de Aprendizaje Automático

29

Validación Cruzada con Scikit-learn y Árboles de Decisión

30

Optimización de Modelos con Grid Search y Random Search

31

Optimización de Modelos con Random Forest en Python

32

Auto-sklearn: Optimización Automática de Modelos de Machine Learning

Salida a producción

33

Estructura de Proyecto en Python: Organiza y Optimiza tu Código

34

Programación Orientada a Objetos con Python Avanzado

35

Creación de Servidor Web con Flask en Python

36

Modelos de Machine Learning: Selección y Optimización

37

Python para Análisis de Datos Financieros

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Estructura de Proyecto en Python: Organiza y Optimiza tu Código

33/37
Recursos

¿Cómo organizar tu entorno de trabajo?

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:

  1. main.py: Aquí implementas todo el flujo principal de Machine Learning.
  2. block.py: Se encarga solo de la carga de elementos y archivos.
  3. utils.py: Almacena métodos reutilizables a lo largo del proceso.
  4. 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.

class Utiles:
    def __init__(self):
        pass

    def load_from_csv(self, path):
        return pd.read_csv(path)
  • 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.

def split_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!

Aportes 25

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

El que hizo el curso en Colab:
D:

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.

Excelente clase, ojalá poder dar likes a las clases que más te gustan 😅

<h3>Resumen</h3>

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.

  • main.py: 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.
  • load.py: Archivo que se encarga de cargar los datos desde in o una DB
  • utils.py: Todos los metodos que se reutilizaran una y otra vez.
  • models.py: Irá toda la parte de ML como tal.

.
.
Repositorio del Proyecto

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:


import import_ipynb
from utils import Utils

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.

nice amigo…me pareció excelente incorporar poo en proyectos de data science

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:

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

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(LA DIRECCION DE NUESTRO ARCHIVO)

#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.

@pd.api.extensions.register_dataframe_accessor("missing")

Muy interesante la arquitectura

Para guardar los cambios hechos en cada archivo 8usar Ctrl+S antes de correr el código.

Tengo un problema con la librería utils con Anaconda. Cuanto intento instalar utils mediante “conda install utils”, no me lo permite.

Luego utilizo el “pip install utils” y si me deja instalar pero Visual Studio Code no lo reconoce ni sale en conda list.

Por útilmo utilizo “python -m pip install utils”, se instala. Visual Studio Code si lo reconoce y sale en conda list, pero a la hora de ejecutar el código me sale el siguiente error:

“ImportError: cannot import name ‘Utils’ from ‘utils’ (/home/demarquezs/anaconda3/envs/ML/lib/python3.10/site-packages/utils/init.py)”

¿Me podrían ayudar por favor?

No entiendo por qué? me sale este error, en el archivo utils tengo como parámetros de la función self y path.

Traceback (most recent call last):
File “Platzi/scikitPlatzi/main.py”, line 6, in <module>
data = utils.load_from_csv(’./in/felicidad.csv’)
TypeError: load_from_csv() missing 1 required positional argument: ‘path’

Una de las grandes ventajas de usar scripts, es que ver las modificaciones en git es mucho mas simple. Además no es tan pesado como en notebooks.
De las clases mas top que he visto en platzi.
Que pedazo de curso!!!

Like por más cursos como este, lo he disfrutado mucho 🚀🔥💯🥇

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.

Yo haciendo todo en kaggle … igual puedo adjuntar foto de la estructura de un proyecto jajaja.