Skip to content

milioe/Intro-APIs-Python-ML

Repository files navigation

🚀👩‍💻 Intro a las APIs

¡Hola! 🌟

Bienvenid@ al repo de la clase de APIs de Python: de cero a ML por Humberto Acevedo

Aquí encontrarás todo lo que necesitas para convertirte en un máster de las APIs 💥


☎️ Contacto

¿Dudas, comentarios o solo quieres saludar? ¡Estoy aquí para ayudarte! 👇

✉️ Email: emilio@milioe.com

🛠️ ¿Cómo correr los códigos?

  1. Clona este repo, corre este comando en tu terminal o da click en <> Code (botón verde), descargar el ZIP y abrir la carpeta en VSC.
    git clone https://github.com/milioe/Intro-APIs-Python-ML.git
  2. Abre VSC, lo puedes descagar desde acá. Dejo el link a un tutorial para correr python
  3. Instala las dependencias que vienen en requirements.txt con el siguiente comando:
    pip install -r requirements.txt
  4. ¡Corre los códigos!

Recursos

🧠 Explicación de los ejercicios:

API de saludo personalizada

En este ejercicio, construimos una API sencilla con Flask que saluda de forma personalizada a los usuarios. Vamos a desglosar las partes clave:

📌 Configuración inicial de Flask

Creamos nuestra aplicación con Flask.

from flask import Flask

app = Flask(__name__)

📌 Definición de la ruta /saludo

Creamos un endpoint que recibe solicitudes POST.

@app.route('/saludo', methods=['POST'])
def saludo():
    ...

📌 Obtención de datos desde la solicitud

Extraemos el nombre enviado por el cliente en formato JSON y asignamos un valor predeterminado si no se proporciona.

data = request.get_json()
nombre = data.get("nombre", "invitado")

📌 Respuesta personalizada

Devolvemos un saludo en formato JSON al cliente.

return jsonify({"mensaje": f"Hola, {nombre}!"})

🏃‍♂️ Ejecución del servidor

Iniciamos la aplicación para probar la API localmente.

if __name__ == '__main__':
    app.run(debug=True)

🚀 Prueba la API:

Puedes probar el endpoint enviando una solicitud POST con un JSON al endpoint http://127.0.0.1:5000/saludo.

Ejemplo:

{
    "nombre": "Carlos"
}

Esto devolverá algo como:

{
    "mensaje": "Hola, Carlos!"
}
API de suma de números

En este ejercicio, construimos una API con Flask que realiza la suma de dos números proporcionados por el usuario. Desglosamos las partes clave a continuación:

📌 Configuración inicial de Flask

Creamos nuestra aplicación con Flask.

from flask import Flask

app = Flask(__name__)

📌 Definición de la ruta /suma

Creamos un endpoint que recibe solicitudes POST para realizar la suma.

@app.route('/suma', methods=['POST'])
def suma():
    ...

📌 Obtención de datos desde la solicitud

Extraemos los números enviados por el cliente en formato JSON.

data = request.get_json()
num1 = data.get("num1")
num2 = data.get("num2")

📌 Realizar la suma

Convertimos los valores a flotantes (para permitir decimales) y realizamos la operación de suma.

resultado = float(num1) + float(num2)

📌 Respuesta al cliente

Devolvemos el resultado de la suma en formato JSON.

return jsonify({"resultado": resultado})

🏃‍♂️ Ejecución del servidor

Iniciamos la aplicación para probar la API localmente.

if __name__ == '__main__':
    app.run(debug=True)

🚀 Prueba la API:

Puedes probar el endpoint enviando una solicitud POST con un JSON al endpoint http://127.0.0.1:5000/suma.

Ejemplo:

{
    "num1": 5,
    "num2": 3.2
}

Esto devolverá algo como:

{
    "resultado": 8.2
}
API de operaciones matemáticas (diferentes endpoints)

Esta API, construida con Flask, realiza operaciones básicas como suma, resta, multiplicación y división. Cada operación tiene su propio endpoint y maneja casos de errores como datos inválidos o división entre cero.

📌 ¿Cómo funciona?

  1. Se define un endpoint para cada operación: /suma, /resta, /multiplicacion y /division.
  2. La API recibe dos números en formato JSON como entrada.
  3. Realiza la operación solicitada y devuelve el resultado en formato JSON.
  4. Si hay un error (como datos no válidos o división entre cero), devuelve un mensaje de error con el código HTTP correspondiente.

📌 Ejemplo de solicitud:

Entrada (JSON):

{
    "num1": 10,
    "num2": 5
}

Salida esperada para /suma:

{
    "resultado": 15
}
API de predicción con modelo de Machine Learning

Esta API utiliza Flask para exponer un modelo de regresión lineal previamente entrenado y guardado en un archivo .pkl. Permite realizar predicciones basadas en los datos enviados por el usuario.

📌 ¿Cómo funciona?

  1. Carga del modelo:
    El modelo de regresión lineal se carga desde un archivo serializado (modelo_regresion_lineal.pkl) usando la librería pickle.
with open("Misc/modelo_regresion_lineal.pkl", "rb") as f:
    model = pickle.load(f)
  1. Definición del endpoint /predecir:
    Este endpoint acepta solicitudes POST, recibe datos en formato JSON y los convierte a un DataFrame para realizar predicciones.
@app.route('/predecir', methods=['POST'])
def predecir():
    ...
  1. Flujo de predicción:
    • Los datos enviados se convierten en un DataFrame.
    • El modelo hace la predicción usando los datos procesados.
    • El resultado de la predicción se devuelve como respuesta JSON.

📌 Manejo de errores

  • Si los datos enviados no pueden procesarse correctamente, la API devuelve un error 400 con un mensaje descriptivo.
  • Si ocurre un error al realizar la predicción, la API devuelve un error 500 con detalles del problema.

📌 Ejemplo de solicitud:

Entrada (JSON):

{
    "feature1": 1.2,
    "feature2": 3.4,
    "feature3": 5.6
}

Salida esperada:

{
    "prediccion": 42.7
}

Si hay un error en los datos:

{
    "error": "Error al procesar los datos: ..."
}

Esta API es una base poderosa para integrar modelos de Machine Learning en aplicaciones reales. 🚀

🎧 Chill & Code

Mientras creaba los contenidos de esta sesión escuchaba este EP

About

Introducción a las APIs en econometría

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published