Modelo de regresión para predecir el precio de portátiles en el mercado egipcio a partir de especificaciones técnicas. Incluye limpieza de datos en bruto obtenidos por web scraping, ingeniería de características (GPU, CPU, pantalla, SO) y comparativa de modelos: Linear Regression, Random Forest y XGBoost.
# Practica M10: Estimacion de Precios de Mercado de Portatiles
## Contexto del Proyecto
Este proyecto nace de un caso de negocio concreto: una empresa de **re-commerce** (reventa de tecnologia de segunda mano) quiere expandirse al mercado de Oriente Medio, concretamente a **Egipto**. Para hacerlo de forma rentable, necesita un tasador automatico que sea capaz de estimar el precio de mercado de un portatil a partir de sus especificaciones tecnicas, sin depender de valoraciones manuales.
El objetivo no es meramente academico. La empresa ha planteado un umbral de exigencia real: quieren un modelo cuyo error medio sea inferior al 5% del precio. Esto obliga a tomarse en serio cada decision de preprocesado, feature engineering y seleccion de modelo.
Los datos provienen de un dataset publico en Kaggle (Laptop Prices and Specifications Dataset), extraido mediante web scraping en noviembre de 2025 desde plataformas de e-commerce de la region. El resultado es un archivo "bruto", tal como llega en la realidad: con valores textuales mezclados con numericos, unidades inconsistentes, nulos significativos y columnas de escaso valor predictivo.
---
## Dataset
El dataset contiene **1.033 filas** y partia con un numero amplio de columnas que incluian especificaciones tecnicas en formato texto libre. Tras la limpieza inicial, las columnas de trabajo relevantes eran las siguientes:
| Columna original | Descripcion |
|---|---|
| `Brand` | Fabricante del portatil |
| `Price` | Precio en libras egipcias (convertido a euros: x 0.018) |
| `Processor` | Nombre completo del procesador |
| `Video graphics` | Descripcion de la tarjeta grafica |
| `Video graphics Memorey` | Memoria de video en texto (p. ej. "8GB GDDR6") |
| `RAM` | Memoria RAM en texto (p. ej. "16GB DDR5") |
| `Hard drive` | Almacenamiento en texto (p. ej. "512 GB SSD", "1TB NVMe") |
| `Display` | Tamano de pantalla en texto (p. ej. "15.6\"") |
| `Display Resolution` | Resolucion en texto (p. ej. "1920x1080", "2560*1440" …