! TPO · Ciencia de Datos — UADE
BUENOS AIRES · 2021–2024
RUTA TPO · GRUPO 6

Análisis y clasificación de la gravedad de los siniestros viales en CABA

Un pipeline reproducible — de la ingesta a la predicción — sobre 37.849 siniestros reales: qué los hace graves, cuántos habrá, y dónde.

CClasificación RRegresión NNo supervisado
Mendez Morante · Gimenez · André · Berrotaran · Checa · TawilDocente: S. G. Martín
RUTA TPO · SALIDA 01
El problema

Tres preguntas sobre 37.849 siniestros en cuatro años

7CLASIFICACIÓN
¿Leve o severo?
Random Forest explicativo›››
9REGRESIÓN
¿Cuántos habrá?
Lineal · validada en 2024›››
10NO SUPERVISADO
¿Dónde y quién?
k-means · DBSCAN · Apriori›››

Todo el trabajo sigue el proceso KDD / CRISP-DM: selección, limpieza, transformación, minería y evaluación de patrones.

METMetodología

Evaluamos la integración antes de integrar

01
Ingesta
6 datasets base + fuentes externas.
02
Perfilado
Cobertura, nulos y llaves, una por una.
03
Veredicto
Integra solo si aporta señal medible.
04
Modelado
Clasificación, regresión, no supervisado.
05
Patrones
Métricas correctas y validación temporal.
Criterio de integración

Un dataset entra solo si comparte llave a granularidad útil, aporta señal medible contra el target, y cubre el período. Documentar lo que no aporta también es un resultado.

Siniestros Viales CABA · TPO
METMetodología

De seis datasets de la consigna, cuatro no aportaban señal

La base y lo que integramos

Siniestros · 37.849
Baselos hechos a explicar · 2021–24
Víctimas · 42.650
Integrarjoin 1:1, mejor predictor

No aportaban señal · 4 de 6

Lluvia mensual
Descartarρ≈0,00 con severo · redunda con estación
Temperatura mensual
Descartarsin señal vs target · proxy de estación
Flujo AUSA
Descartar36% NaN · solo autopistas
Flujo Anillo Digital
Descartar74% NaN · termina feb-2022

Un dataset entra solo si comparte llave útil, aporta señal medible y cubre el período. Documentar el resultado negativo con números es parte del entregable.

Siniestros Viales CABA · TPO
METMetodología · reemplazos

En su lugar, tres fuentes con la granularidad correcta

AgregarDIARIO
Clima diario
Meteostat · Aeroparque

Precipitación y temperatura por día → la feature llovió_ese_día, con variación real entre siniestros.

↳ reemplaza al clima mensual
AgregarCALENDARIO
Feriados
ArgentinaDatos

78 feriados 2021–24 → la feature es_feriado, que complementa al fin de semana.

↳ nuevo eje temporal
AgregarMENSUAL
Peajes de autopistas
IDECBA

Vehículos por peaje — el único conteo vehicular continuo de CABA → proxy de exposición y tránsito.

↳ reemplaza al flujo por radares

Lo que define si un dato sirve es la granularidad, no la fuente: el clima diario varía entre siniestros del mismo mes; los peajes son el único conteo vehicular continuo de la Ciudad. Todo entra como archivos estáticos versionados — sin APIs en runtime.

Siniestros Viales CABA · TPO
EDAAnálisis exploratorio

El retrato: moto, hora pico y un 5,7% que termina grave

37.849
Siniestros · 2021–24
25,9
Por día
5,7%
Severos · grave+mortal
Moto
Víctima más frecuente

La hora pico de siniestros sigue la hora pico de tránsito. Tras la moto, el peatón; la contraparte más común es el auto.

Tasa de siniestros por comuna
195 459

Siniestros / 100.000 hab / año · Censo 2022.
Comuna 1: 458 — 2,3× la Comuna 6.

Siniestros Viales CABA · TPO
EDAAnálisis exploratorio

Los siniestros crecieron +35% desde 2021

02505007501.0000%6%12%2021202220232024
Siniestros / mes% severo (media móvil 3m)

Crecimiento sostenido tras la pandemia: +35,2% entre 2021 y 2024.

La línea roja —el % que termina severo— se mantiene en una banda baja: crece la cantidad, no la gravedad.

Pero el número crudo esconde una pregunta: ¿empeoró la seguridad vial, o solo volvió el tránsito a la calle?

Siniestros Viales CABA · TPO
EXPExposición · normalización

El tránsito explica dos tercios de ese +35%

Descomposición del +35,2% de siniestros · 2021 → 2024 r = 0,88 entre tránsito y siniestros
Exposición · 2/3 El tránsito creció +22,4%
Riesgo real · 1/3 Tasa +10,5%
68 → 75
Siniestros por millón de vehículos
+2,87
Siniestros/día por millón extra

Proxy: peajes de autopistas (IDECBA), el único conteo vehicular continuo de la Ciudad. Sin normalizar por exposición, el número crudo engaña.

Siniestros Viales CABA · TPO
EXPExposición · normalización

Normalizar por tránsito reordena el ranking de avenidas

Avenidas · sensores de volumen 2024 (95 puntos)

Av. Rivadavia

Primera en crudo — y sigue primera normalizada (65/millón). Su volumen no la explica.

#1
=
#1

Av. Corrientes

Top-5 en crudo, cae al último normalizada (19/millón). Su ranking era puro tránsito.

top-5
último

Autopistas · peajes IDECBA, siniestros por millón de vehículos

Corredor oeste · 25 de Mayo + Perito Moreno
0,55
Autopista Illia · más severa
0,10

La Illia tiene 5× menos siniestros por vehículo pero la mayor severidad: pocos choques, y a alta velocidad. El sensor mide un punto, no toda la arteria — índice comparativo.

Siniestros Viales CABA · TPO
EDAAnálisis exploratorio

La lluvia reduce los siniestros, pero no los vuelve más graves

Siniestros por día, según la lluvia

Sin lluvia
26,6
Con lluvia
24,5
> 20 mm
21,0

−8% con lluvia · −21% con lluvia fuerte. Dosis-dependiente.

Es una caída general de exposición — circula menos gente. La gravedad del siniestro individual no cambia: 5,7% vs 5,9% severo.

Confirmado por 3 fuentes independientes

Diaria · Meteostat → −8% Horaria · Open-Meteo → −4,9%, gravedad igual Per-incidente · AUSA → superficie mojada, menos lesividad
Siniestros Viales CABA · TPO
EDAAnálisis exploratorio

La velocidad de la vía ordena la severidad de punta a punta

20
Zona peatonal · 20 km/h
3,4%
40
Calle · 40 km/h
3,8%
60
Avenida · 60 km/h
5,4%
80+
Autopista · 80+ km/h
14,1%
×4SEVERIDAD

De la zona peatonal a la autopista, los siniestros severos se multiplican por cuatro. El límite legal lo fija el tipo de vía.

Siniestros Viales CABA · TPO
NSAprendizaje no supervisado · k-means (k=5)

La gravedad no es un lugar: es un perfil

Siniestros Viales CABA · TPO
NSNo supervisado · k-means · método

Cómo se arman los cinco perfiles

La receta · 8 variables del siniestro

horafin de semanaedad media% masculinon° víctimashay motohay peatónhay mayor

Imputación por medianaStandardScaler (estandarizar evita que la edad domine por escala) → k-means (random_state=42, n_init=10).

k elegido por el método del codo (k=2…8)

k=52345678

Cómo se nombró cada cluster

PerfilRasgo dominante% severo
Persona mayoredad 73 · sin moto12,9%
Peatón adulto~36 · peatón10,3%
Moto laboral~32 · 70% masc · semana7,0%
Finde joven~32 · 100% finde6,3%
Vehicular leveauto vs auto · sin moto/peatón2,0%

k-means devuelve grupos anónimos (0–4). Cada uno se etiquetó mirando la media de sus features por cluster —edad, % moto, % peatón, % finde— y su rasgo dominante.

Siniestros Viales CABA · TPO
NSNo supervisado · PCA · método

PCA: ¿conviene reducir dimensiones? No.

Qué es y para qué lo usamos

PCA combina las 8 variables del perfil en componentes ortogonales, ordenados por cuánta varianza capturan. Le dimos dos usos:

1 · Visualizar — proyectar los 5 perfiles a 2D para ver que se separan (el scatter de la slide de perfiles).

2 · Decidir si reducir dimensiones antes de modelar — y la respuesta fue que no.

Varianza acumulada por componente

50%80%100%7 comp.12345678componentes principales

Hacen falta 7 de 8 componentes para el 80% de la varianza: no hay un eje dominante. Las features son casi ortogonales → PCA no sirve para comprimir, solo para proyectar y poder ver los grupos.

Siniestros Viales CABA · TPO
EDAAnálisis exploratorio

Madrugada de finde: el doble de gravedad

% de siniestros severos · graves + mortales

5,5%
12,1%
Resto Madrugada de finde

×2,2 más severos — sobre una base global de 5,7%

% de siniestros con víctimas menores de 30

Madrugada de finde43,9%
Resto del tiempo33,6%

Casi 1 de cada 2 siniestros de esa franja es de un menor de 30 (edad mediana 31 vs 35): la madrugada de finde es cuando los jóvenes están al volante.

Matiz importante: la severidad individual por edad la dominan los mayores de 65 (12,9% severo, fragilidad), no los jóvenes (7,2%). Exposición y vulnerabilidad son mecanismos distintos.

Siniestros Viales CABA · TPO
EDAAnálisis exploratorio · cambiá el lente

Volumen y gravedad casi nunca coinciden — mirá el cuándo

CLFClasificación · clases 7–8

Primera tarea · predecir si un siniestro será grave

La accuracy miente

Un modelo que diga siempre "LEVE" —sin mirar ninguna variable— acierta el 94% de las veces. Con un target así de desbalanceado, el puntaje engaña: hay que medir cuántos severos realmente caza.

El target original, reagrupado

LEVE
94,3%
GRAVE
4,6%
MORTAL
1,1%

Solución: binario LEVE vs SEVERO (5,7%), class_weight=balanced, y evaluar con precision, recall, F1-Score y ROC-AUC —no accuracy— sobre validación cruzada estratificada de 5 particiones.

Siniestros Viales CABA · TPO
CLFClasificación · feature engineering

Diecisiete variables, construidas desde la víctima

Del registro crudo a la matriz del modelo

AGREGADOSedad_media, pct_masculino, n_víctimas — promediando las víctimas de cada siniestro
FLAGS CURADOShay_peatón, hay_moto, hay_mayor (65+), hay_menor
TEMPORALEShora, día de semana, mes, finde, feriado
CONTEXTOfranja horaria, estación, tipo de calle, víctima, acusado
SINTÉTICAzona — k-means geográfico → slide siguiente

Importancia en el RF · top 5 (Gini)

edad_media
0,20
pct_masculino
0,10
hay_peatón
0,07
hora
0,07
víctima PEATÓN
0,07

Categóricas → OneHotEncoder(handle_unknown='ignore'); numéricas → imputación por mediana + StandardScaler. Excluimos los flags *_DESCONOCIDO: la completitud del registro es consecuencia de la gravedad (leakage de proceso) → ver Limitaciones.

Siniestros Viales CABA · TPO
CLFClasificación · método y validación

Cómo entrenamos y validamos el clasificador

El pipeline · preproceso por tipo de columna

NUMÉRICASimputación por medianaStandardScaler
CATEGÓRICASmoda → OneHotEncoder(handle_unknown='ignore')

Todo el preproceso vive dentro del Pipeline de scikit-learn: se ajusta solo con el train de cada fold, nunca con validación — sin leakage.

Modelo final: Random Forest · n=300 · max_depth=10 · min_samples_leaf=5.

El protocolo de validación

1

Holdout 20% estratificado, intacto — toda la selección de modelos ocurre solo sobre el train.

2

Validación cruzada estratificada de 5 folds (random_state=42), mismo protocolo para los 5 modelos.

3

class_weight='balanced' — compensa que solo el 5,7% es severo.

4

Árboles con criterio Gini + poda (max_depth, min_samples_leaf) contra el overfitting.

5

Métricas de evaluación: precision · recall · F1 · ROC-AUC (no accuracy).

Siniestros Viales CABA · TPO
CLFClasificación · ablación

Probamos sumar la zona con k-means — casi no cambió el modelo

Qué probamos

Un segundo k-means (k=8) que agrupa las coordenadas (lat, lon) en zonas y le pasa esa etiqueta al Random Forest como una variable más.

(lat, lon) k-means(8) Z0…Z7 one-hot RF

Ajustado dentro de cada fold (KMeansZonaAdder) para no filtrar validación. El protocolo fue limpio — el resultado, igual de pobre.

Qué pasó

0,8110,816
ROC-AUC · sin → con zona
+0,005 dentro del ruido (±0,011)

La sacamos del modelo final. La gravedad casi no depende del lugar: es un perfil, no una zona. El k-means vale acá como herramienta descriptiva (los 5 perfiles, slides 12-13), no como feature del clasificador.

Siniestros Viales CABA · TPO
CLFClasificación · clases 7–8

Cuatro modelos, un mismo protocolo: por qué gana Random Forest

Validación cruzada estratificada · 5 folds · sobre el train — el holdout se mide en la próxima slide

ModeloAccuracyPrecisión sev.Recall sev.F1 sev. ★ROC-AUC
Árbol de decisión · d=4 interpretable0,6260,1110,790,1940,756
Árbol de decisión · d=70,6900,1250,730,2140,768
Regresión logística0,7150,1370,750,2310,815
Random Forest · n=300, d=100,7780,1570,650,2530,811
+ zona k-means ablación0,7940,1660,640,2640,816
0,253F1 · el más alto

Ordenamos por F1, el balance de precisión y recall — la métrica correcta con clases desbalanceadas. Ahí RF gana.

0,811ROC-AUC · top

Entre los más altos; la diferencia con la logística (0,815) está dentro del ruido (±0,011).

Los árboles engañan

El d=4 llega a 0,79 de recall pero marcando de más (F1 0,194). RF no canjea precisión por recall.

La última fila es la ablación: sumar la zona del k-means da +0,005 ROC-AUC, dentro del ruido — nos quedamos con el modelo más simple. Criterio Gini, poda preventiva contra el sobreajuste.

Siniestros Viales CABA · TPO
CLFClasificación · clases 7–8

El modelo final: un triage cuyo recall elegimos con el umbral

Matriz de confusión · holdout (test 20%) · umbral 0,50

True Positive
severo predicho severo · lo caza
67%
True Negative
leve predicho leve
77%
False Positive
leve predicho severo · falsa alarma
23%
False Negative
severo predicho leve · el costoso
33%

Fila superior: aciertos · inferior: errores. % sobre cada clase real (test 20%, umbral 0,50).

0,81
ROC-AUC · discriminación del modelo final

El recall se elige con el umbral · sobre el holdout

0,67
por defecto (0,50)
marca severo al 26%
0,85
triage (0,36)
marca severo al 42%

Es un triage de gravedad: al registrar el siniestro —quién, dónde, edad— estima su gravedad para priorizar la respuesta. Como perder un severo cuesta más que una falsa alarma, bajamos el umbral y el recall sube de 0,67 a 0,85 — sin cambiar de modelo, eligiendo su punto sobre la curva.

Identifica factores de gravedad — peatón, 65+, madrugada, tipo de vía — con los datos del parte.

Siniestros Viales CABA · TPO
CLFClasificación · clases 7–8

Un árbol legible: las reglas detrás de la decisión

0,79
Recall severo · árbol de decisión d=4

Atrapa 79 de cada 100 severos, y sus reglas se leen una por una. Sacrifica precisión, pero como red de seguridad auditable es justo lo que se quiere.

No es una alternativa de más recall al RF: a la misma precisión, el RF calibrado da 0,85 vs 0,79. El árbol no discrimina mejor; su valor está en que es legible. Por eso es complemento, no el modelo final. Criterio Gini, profundidad 4, reglas con plot_tree.

Cómo decide, en factores

¿Hay un peatón?SÍ ↑ ≈2× severo
¿La víctima es mayor de 65?SÍ ↑ ≈2× severo
¿Es de madrugada?SÍ ↑ ≈2× severo

Antes de estos tres, el árbol abre separando el perfil de la víctima (% de varones — moto vs. peatón), que no es un "más/menos" sino un tipo de siniestro. Cada factor de acá ≈ duplica la tasa base de 5,7%.

Siniestros Viales CABA · TPO
REGRegresión · método · clase 9

Cuántos siniestros por día: validación temporal

La receta · una fila por día (1.461 días)

CALENDARIOdía de semana y mes en one-hot con drop_first (cada coeficiente se lee contra una categoría base), finde, feriado
CLIMAllovió, precipitación, temperatura media y máxima
TENDENCIAdías desde el inicio — el nivel de tránsito que sube año a año

Validación temporal, no aleatoria: entrenamos con 2021–2023 y testeamos sobre 2024, un año que el modelo nunca vio.

Tres modelos · gana la lineal

Regresión lineal (dummies)
extrapola la tendencia creciente
0,39
R² · 2024
Random Forest regressor
no capta la tendencia creciente
0,31
R² · 2024
Árbol de regresión (d=5)
se queda dentro del rango 2021–23
0,24
R² · 2024

= fracción de la variación diaria explicada. Los árboles solo predicen valores vistos en el train; la lineal proyecta la tendencia (recuperación post-pandemia). Por eso gana — por margen, no por goleada.

Siniestros Viales CABA · TPO
REGRegresión · clase 9

Cuántos siniestros habrá mañana: gana la regresión lineal

Coeficientes · efecto en siniestros por día

Feriado
−9,6
Fin de semana
−5,3
Día de lluvia
−1,7
Tránsito del mes
+2,9

Por millón de vehículos extra · escala en siniestros/día

0,40
R² sobre 2024
7,4
RMSE · siniestros/día

Acierta dentro de ±7 sobre ~26 por día. En conteos diarios el R² tiene techo bajo: lo que falta para 1,0 es ruido día-a-día irreducible, no error del modelo.

El feriado es el factor más fuerte — más que cualquier variable climática. Validado sobre 2024, un año nunca visto.

Los árboles no extrapolan la tendencia creciente; la lineal sí. Reemplazar la "tendencia" abstracta por el tránsito real del mes la explica por su mecanismo: la recuperación post-pandemia.

Siniestros Viales CABA · TPO
NSNo supervisado · Apriori · método

Reglas de asociación: soporte, confianza y lift

La receta

Cada siniestro es una canasta de ítems: franja horaria, tipo de calle, víctima, acusado, finde/semana — más su etiqueta LEVE / SEVERO.

El algoritmo Apriori busca combinaciones frecuentes y arma reglas; nos quedamos solo con las que terminan en SEVERO y las ordenamos por lift.

canasta de ítems
apriori(soporte ≥ 1%)
reglas con lift ≥ 1,2
antecedente SEVERO

Las tres métricas

Soportesop(X)

Qué tan común es la combinación X — su frecuencia sobre los 37.849 siniestros. Pedimos ≥ 1% para evitar reglas anecdóticas.

ConfianzaP(SEVERO | X)

De los siniestros que cumplen X, qué proporción termina severa. Es la probabilidad condicional de gravedad dada la combinación.

Liftconf / base

Confianza dividida la base global (5,7%). Lift 2 = el doble de probable que el promedio. Filtramos lift ≥ 1,2.

Siniestros Viales CABA · TPO
NSNo supervisado · Apriori · explorá las reglas

Combinaciones que duplican el riesgo de gravedad

Siniestros Viales CABA · TPO
NSNo supervisado · DBSCAN · método

DBSCAN: agrupar por densidad, sin fijar cuántos grupos hay

La receta

Un punto es núcleo si tiene al menos min_samples vecinos dentro de un radio eps. Los núcleos conectados forman un hotspot; lo que queda aislado es ruido y se descarta.

eps ≈ 60 m
min_samples = 40 siniestros
distancia = haversine (lat, lon)

Trabaja sobre coordenadas reales con distancia geográfica (haversine), no euclídea sobre grados.

Por qué DBSCAN y no k-means

No fijás k

A diferencia de k-means, no le decís cuántos grupos hay: DBSCAN descubre cuántos focos densos existen — encontró 29.

Separa el ruido

k-means asigna todo punto a una zona; DBSCAN deja fuera lo disperso y se queda solo con los focos densos — justo lo que es una "esquina peligrosa".

29
micro-hotspots
4,6% de los siniestros en ~0,2% de la ciudad · el mayor: 153 en Balbín y Gral. Paz
Siniestros Viales CABA · TPO
NSNo supervisado · DBSCAN · mapa interactivo

Veintinueve esquinas concentran los siniestros más densos

Siniestros Viales CABA · TPO
CLFClasificación · modelo de lifts ≡ logística

Armá un siniestro: ¿leve o severo?

Siniestros Viales CABA · TPO
REGRegresión lineal · siniestros por día

¿Cuántos siniestros mañana?

Siniestros Viales CABA · TPO
CONConclusiones

Seis conclusiones

1
Hallazgo

La señal de gravedad está en el quién y el cuándo — peatón, moto, mayores de 65, madrugada de finde, tipo de vía — no en el ambiente ni en el lugar exacto.

2
Hallazgo

El crecimiento es ante todo exposición: dos tercios del +35% lo explica el tránsito (+22%); la tasa por vehículo subió solo +10%.

3
Hallazgo

La lluvia es un factor de frecuencia (menos exposición → menos siniestros), no de gravedad. Confirmado por tres fuentes.

4
Hallazgo clave

La velocidad de la vía es el factor estructural de severidad más claro: el gradiente 20 → 80 km/h multiplica por 4 los siniestros severos.

5
Para política pública

Proteger peatones en avenidas, controlar madrugadas de finde, atender a los mayores de 65 e intervenir los hotspots.

6
Método

Evaluar la integración antes de integrar, reagrupar el target (la mejora más barata) y quedarse con el modelo más simple cuando la mejora no supera el ruido.

Siniestros Viales CABA · TPO
FINGracias · preguntas
CIENCIA DE DATOS · UADE
RUTA TPO · FIN DE RUTA

Gracias.

25 gráficos4 mapas interactivos4 modelos serializados

Integrantes

Valentín Mendez Morante1194063
Mariano Gimenez Zalcman1130285
Eduardo André1093810
Pedro Berrotaran1176890
Keila Checa1177842
Elisheba Tawil1153107
Ciencia de Datos · 3.4.217 · UADE · Docente S. G. Martín1er cuatrimestre 2026