Logo Lanfrica

ivanrzrz96/Machine-Learning

Domain:

environment and energy

Record type:

datasetproject
Creator:
iva
Host:
Clasificación multiclase del estado de bombas de agua en Tanzania (DrivenData). Random Forest + frequency encoding.Predicción del estado de bombas de agua en Tanzania. EDA, imputación por zona geográfica y comparativa de 6 modelos. # Pump it Up: Data Mining the Water Table Clasificación multiclase del estado operativo de bombas de agua en Tanzania. Competición de DrivenData. Práctica final del módulo de Machine Learning del Máster en Data Science y Business Analytics. --- ## El problema El gobierno de Tanzania mantiene decenas de miles de puntos de agua, y muchos están averiados. Enviar cuadrillas a revisarlos uno por uno es caro y lento. Si se pudiera predecir cuáles están fallando a partir de los datos que ya existen, el mantenimiento se podría priorizar. La tarea es clasificar cada bomba en una de tres categorías: - `functional` — funciona - `functional needs repair` — funciona pero necesita reparación - `non functional` — no funciona A partir de 39 variables: ubicación, tipo de extracción, quién la gestiona, quién la financió, calidad y cantidad de agua, año de construcción. - 59.400 bombas de entrenamiento, 14.850 de test - La métrica de evaluación es accuracy --- ## Los tres problemas reales de estos datos El dataset parece limpio a primera vista. No lo está. ### 1. Miles de ceros que en realidad son datos faltantes `df.info()` no reporta valores nulos en las columnas numéricas. Pero un tercio de las bombas tiene `construction_year = 0` y `population = 0`. Ninguna bomba se construyó en el año 0, y una bomba que no sirve a nadie es un registro sospechoso. Lo mismo con `longitude = 0` y `gps_height = 0`: Tanzania está entre los 29 y 41 grados de longitud, y su altitud no es cero. Si se dejan como ceros, el modelo los trata como valores reales y aprende un patrón falso: que hay un grupo de bombas construidas en el año 0. `latitude` tiene un matiz añadido — el valor centinela no es `0` sino `-2e-08`, así que buscarlo con `== 0` no lo encuentra. ### 2. Variables categóricas con casi 2.000 valores distintos `funder` (quién financió la bomba) e `installer` (quién la instaló) tienen alrededor de 1.900 categorías cada una. Con One-Hot Encoding generarían miles de columnas casi …