Proyecto de Deep Learning para predicción de temperatura usando redes neuronales recurrentes (LSTM) con TensorFlow/Keras.
Este proyecto implementa un modelo de aprendizaje profundo basado en arquitectura LSTM (Long Short-Term Memory) para predecir la temperatura 24 horas adelante, utilizando datos históricos de variables meteorológicas.
- Dataset: Weather Dataset de Kaggle (~96,453 registros horarios)
- Modelo: LSTM multicapa con regularización
- Objetivo: Predicción de temperatura 24 horas adelante
- Framework: TensorFlow 2.x + Keras
- Métricas: MAE, RMSE, R², MAPE
- Gestión de dependencias: UV (moderno y rápido)
deep-learning/
├── weather_temperature_prediction.ipynb # Notebook principal
├── download_dataset.py # Script para descargar dataset
├── predict.py # Script para predicciones
├── pyproject.toml # Dependencias (UV)
├── requirements.txt # Dependencias (pip legacy)
├── README.md # Este archivo
├── .gitignore
│
├── .venv/ # Entorno virtual (generado por UV)
├── datasets/ # Datos (se genera al descargar)
│ └── weatherHistory.csv
├── models/ # Modelos entrenados (se genera)
│ ├── temperature_lstm_model_final.keras
│ ├── scaler.pkl
│ └── metadata.json
└── results/ # Visualizaciones (se genera)
git clone https://github.com/zam-cv/deep-learning
cd deep-learningEste proyecto usa UV para gestión de dependencias (más rápido que pip).
# UV instalará automáticamente las dependencias y creará .venv/
uv syncAlternativa con pip tradicional:
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtEl dataset se descarga desde Kaggle. Configura tus credenciales:
# 1. Ve a https://www.kaggle.com/settings/account
# 2. Sección "API" → "Create New Token"
# 3. Se descargará kaggle.json
# En Mac/Linux:
mkdir -p ~/.kaggle
mv ~/Downloads/kaggle.json ~/.kaggle/
chmod 600 ~/.kaggle/kaggle.json
# En Windows:
# Crea: C:\Users\<TuUsuario>\.kaggle\
# Mueve kaggle.json ahíOpción A: Script automático (RECOMENDADO)
uv run python download_dataset.pyOpción B: Desde el notebook
El notebook descargará el dataset automáticamente si tienes Kaggle configurado.
Opción C: Descarga manual
- Ve a: https://www.kaggle.com/datasets/muthuj7/weather-dataset
- Click "Download" (requiere cuenta Kaggle gratis)
- Descomprime y coloca
weatherHistory.csvendatasets/
# Con UV
uv run jupyter notebook weather_temperature_prediction.ipynb
# O activa el entorno manualmente
source .venv/bin/activate
jupyter notebook weather_temperature_prediction.ipynbEl notebook está organizado en:
- Introducción - Planteamiento del problema
- Datos - Carga, análisis y preprocesamiento
- Desarrollo - Modelo baseline y LSTM V1
- Ajuste - LSTM V2 mejorado con regularización
- Resultados - Evaluación en conjunto de prueba
- Conclusiones - Análisis y mejoras futuras
- Aplicación - Función de predicción lista para usar
Después de entrenar el modelo en el notebook:
uv run python predict.pyInput: (168 horas, 13 características)
↓
LSTM(128) → Dropout(0.2) → BatchNormalization
↓
LSTM(64) → Dropout(0.2) → BatchNormalization
↓
LSTM(32) → Dropout(0.2)
↓
Dense(16, relu) → Dropout(0.1)
↓
Dense(1) → Temperatura predicha 24h adelante
Mejoras implementadas:
- 3 capas LSTM (vs 2 en V1)
- Dropout (20%) para regularización
- Batch Normalization para estabilidad
- 128→64→32 unidades (arquitectura descendente)
- Capa densa adicional antes de salida
| Métrica | Valor |
|---|---|
| MAE | X.XX°C |
| RMSE | X.XX°C |
| R² | 0.XXX |
| MAPE | X.XX% |
Los valores exactos se obtienen al ejecutar el notebook
- TensorFlow 2.20.0
- Pandas 2.3.3
- NumPy 2.3.4
- Scikit-learn 1.7.2
- Matplotlib 3.10.7
- Jupyter Notebook 7.4.7
- Kaggle 1.7.4 (para descarga de datos)
Ver pyproject.toml para la lista completa.
Si ves "HTTP Error 404: Not Found":
-
Verifica credenciales de Kaggle:
cat ~/.kaggle/kaggle.json # Debe existir
-
Usa el script de descarga:
uv run python download_dataset.py
-
Descarga manual:
- Ve a Kaggle (enlace arriba)
- Descarga manualmente
- Coloca en
datasets/
Si UV no está instalado:
curl -LsSf https://astral.sh/uv/install.sh | sh- Hochreiter & Schmidhuber (1997). Long Short-Term Memory
- Cho et al. (2014). Learning Phrase Representations using RNN Encoder-Decoder
Alberto Velázquez
Proyecto académico - Uso educativo
Última actualización: Noviembre 2025