Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -375,19 +375,18 @@ def imputacion_correlacion(df, path: str = "ADRpy/analisis/Data/Datos_aeronaves.
if not validos:
# registra advertencias y NO imputa
for m in descartados or [{"motivo": "Sin predictores válidos"}]:
for idx in faltantes:
reporte.append({
"Fila": idx,
"Parametro": objetivo,
"Valor imputado": np.nan,
"Confianza": 0.0,
"Corr": 0.0,
"k": 0,
"Tipo Modelo": m.get("tipo", "n/a"),
"Predictores": ",".join(m.get("predictores", [])),
"Penalizacion_k": 0.0,
"Advertencia": f"Modelo descartado: {m['motivo']}",
})
reporte.append({
"Fila": idx,
"Parametro": objetivo,
"Valor imputado": np.nan,
"Confianza": 0.0,
"Corr": 0.0,
"k": 0,
"Tipo Modelo": m.get("tipo", "n/a"),
"Predictores": ",".join(m.get("predictores", [])),
"Penalizacion_k": 0.0,
"Advertencia": f"Modelo descartado: {m['motivo']}",
})
continue

mejores = filtrar_mejores_modelos(validos)
Expand Down
35 changes: 21 additions & 14 deletions tests/test_imputacion_correlacion.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
import sys
import os

# Agregar la carpeta raíz al sistema de rutas
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..')))

from ADRpy.analisis.Modulos.imputacion_correlacion.imputacion_correlacion import imputacion_correlacion
import tempfile
import pandas as pd
from ADRpy.analisis.Modulos.imputacion_correlacion import imputacion_correlacion

import numpy as np
from ADRpy.analisis.Modulos.imputacion_correlacion.imputacion_correlacion import imputacion_correlacion

def test_imputacion_correlacion_basica():
df, reporte = imputacion_correlacion('ADRpy/analisis/Data/Datos_aeronaves.xlsx')
assert not df.isna().any().any(), "Deberia imputar todos los valores faltantes"
# Verificamos que el valor imputado para Potencia en la fila 2 sea cercano al calculo esperado
valor = df.loc[2, 'Potencia']
assert round(valor, 3) == round(25.9691788448, 3)
assert 'Confianza' in reporte.columns
print("hola")
assert not df.isna().any().any()
assert 'Confianza_cv' in reporte.columns

def test_single_warning_per_missing_cell():
data = pd.DataFrame({
'Modelo': ['a', 'b', 'c'],
'Misión': [1, 1, 1],
'X': [1, 1, 1],
'Y': [np.nan, np.nan, 5],
})
tmp = tempfile.mktemp(suffix='.xlsx')
with pd.ExcelWriter(tmp, engine='openpyxl') as writer:
data.to_excel(writer, sheet_name='data_frame_prueba', index=False)
try:
_, reporte = imputacion_correlacion(None, path=tmp)
assert len(reporte) == data['Y'].isna().sum()
finally:
os.remove(tmp)