Añade al capítulo `correlacion` del AutomaticEDA la visualización con scatters de
los pares numérico-numérico más correlacionados (positiva y negativamente) y,
para cada uno, la clasificación del tipo de relación: lineal, polinómica
(grado 2/3), monótona no-lineal o débil/sin forma.
Funciones nuevas del registry (dominio datascience, grupo eda):
- classify_relationship_type_py_datascience (pura): dadas dos listas numéricas
pareadas, cruza Pearson r (lineal), Spearman ρ (monótona) y ajustes
polinómicos de grado 2 y 3 (numpy.polyfit + R² manual) para etiquetar la
forma. Reusa pearson y spearman_corr del registry. Umbrales calibrados para
datos reales discretos/ruidosos (orden: débil → monótona → polinómica →
lineal). Devuelve los coeficientes del mejor modelo para pintar la curva.
No-throw.
- relationship_scatter_figure_py_datascience (impure): construye la Figure
matplotlib del scatter de un par con su recta/curva de ajuste y una anotación
del tipo + métricas (r, ρ, R²lin, R²poly). Backend Agg sin pyplot global,
downsample determinista de los puntos dibujados, tendencia ordenada (binned /
por valor) para el caso monótona sin polinomio. Defensiva ante vacío.
Capítulo correlacion.py (1.0.0 → 1.1.0): nueva sección "Relaciones más fuertes
(scatter)" tras la matriz + tablas top. Toma los top-K pares num↔num por |valor|
de profile['correlations']['pairs'], obtiene los datos crudos de cada par desde
ctx['raw_numeric'] y emite, por par, un Figure dentro de un Group keep-together
junto a una nota de texto con el tipo de relación (extraíble por pdftotext).
Solo num↔num: los pares cat↔cat (Cramér's V) y num↔cat (razón de correlación)
no llevan scatter. Cuando no hay raw_numeric (perfil lite/agregado o ctx None)
los scatters se omiten sin lanzar; la matriz + tablas siguen.
Verificado: golden EDA de titanic (run_models) — el capítulo Correlación del PDF
y PPTX incluye los scatters (pclass↔fare → monótona no-lineal, sibsp↔parch →
lineal, …) con su ajuste y etiqueta de tipo en texto. Tests de clasificación
sintética (lineal, y=x² → polinómica, y=exp(x) → monótona, ruido → débil) +
tests del capítulo (golden con raw_numeric, edge sin raw, par sin columna). Suite
automatic_eda + pipeline render_automatic_eda verde (141 passed). fn index sin
error.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>