Referencia de API — evalcards
Actualmente, el punto de entrada público es make_report.
make_report(...)
Módulo: evalcards.report
Devuelve:
- Si no se solicita export JSON: str con la ruta del Markdown generado.
- Si se pasa export_json: Tuple[str, dict] -> (ruta_markdown, info_dict) donde info_dict contiene las métricas y rutas de los gráficos.
Firma
make_report(
y_true,
y_pred,
y_proba: Optional[Sequence[float] | np.ndarray] = None,
*,
path: str = "report.md",
title: str = "Reporte de Evaluación",
labels: Optional[Sequence] = None,
task: Literal["auto","classification","regression","forecast","multi-label"] = "auto",
out_dir: Optional[str] = None,
# Forecast:
season: int = 1,
insample: Optional[Sequence[float]] = None,
lang: str = "es",
metrics: Optional[List[str]] = None,
fmt: str = "md",
export_json: Optional[str] = None,
sensitive_features: Optional[Sequence] = None, # Para medir Fairness
query_id: Optional[Sequence] = None, # Requerido para task="ranking"
) -> Union[str, Tuple[str, Dict[str, Any]]]
Parámetros
y_true(array-like 1Do2Den multi-label): valores/etiquetas reales. Soportalist,np.ndarray,pd.Series.y_pred(array-like 1Do2Den multi-label, odict): valores/etiquetas predichas. Misma longitud/forma quey_true. Si esdict, las llaves son nombres de modelos y los valores son predicciones.y_proba(opcional):- Binaria:
array-like 1Dcon prob. de la clase positiva, odictpara multi-modelo. - Multiclase:
array-like 2D(n_samples, n_classes)con prob. por clase, odict. - Multi-label:
array-like 2D(n_samples, n_labels)con prob. por etiqueta, odict. path(str, por defecto"report.md"): nombre del archivo Markdown a generar.- Si no incluye carpeta, se guardará en
./evalcards_reports/por defecto. title(str): título mostrado en el reporte.labels(Sequence, opcional): nombres legibles por clase/etiqueta (longitud =n_classes/n_labels). Si no se pasa, se usan índices o clases originales.task("auto" | "classification" | "regression" | "forecast" | "multi-label"):"auto"intenta detectar multi-label (siy_trueyy_predson 2D binarias) o clasificación/regresión por heurística.out_dir(str | None): carpeta de salida. Si se indica, tiene prioridad sobre la carpeta por defecto.season,insample,lang,metrics: ver sección Forecast / i18n / selección de métricas.sensitive_features(Sequence, opcional): Array con los grupos demográficos o segmentos para calcular el Análisis de Equidad (Fairness & Bias).query_id(Sequence, opcional): Identificadores de sesión/grupo, obligatorio sitask="ranking".export_json(str|None) — NUEVO:- Si se pasa una ruta (absoluta o relativa), además del Markdown se generará un archivo JSON con las métricas calculadas y las rutas de las imágenes generadas.
- Si
export_jsonse pasa como nombre (sin carpeta), el JSON se colocará en la misma carpeta de salida resuelta (out_dir/ carpeta por defecto). - Si
export_jsonesNone(por defecto), no se genera el JSON y el comportamiento previo no cambia.
Retorno
str: ruta al archivo Markdown generado (caso sinexport_json).(str, dict):(ruta_markdown, info_dict)siexport_jsonfue solicitado.info_dictcontiene:metrics: mapping métrica -> valor (floats/valores serializables).charts: mapping con los nombres/paths relativos de las imágenes generadas (por tipo).markdown: nombre del archivo Markdown generado (basename).
Ejemplo de info_dict:
{
"metrics": {
"accuracy": 0.9125,
"roc_auc": 0.94
},
"charts": {
"confusion": "confusion.png",
"roc": ["roc.png"],
"pr": ["pr.png"]
},
"markdown": "report.md"
}
Efectos colaterales (archivos)
- Clasificación:
confusion.png; si hayy_probabinaria:roc.png,pr.png.
Multiclase:roc_class_<clase>.png,pr_class_<clase>.pngpor clase. - Multi-label:
confusion_<etiqueta>.png,roc_label_<etiqueta>.png,pr_label_<etiqueta>.pngpor etiqueta (si se pasan probabilidades). - Regresión/Forecast:
fit.png,resid.png.
Los archivos se escriben en la carpeta resuelta por out_dir/path. Si export_json se indica con ruta absoluta, el JSON se escribirá exactamente allí (creando directorio si es necesario).
Ejemplos breves
- Uso en Python (export JSON y usar info en memoria):
md_path, info = make_report(y_true, y_pred, y_proba=proba, path="rep.md", title="Mi modelo", export_json="rep.json")
print(md_path) # ruta del markdown
print(info["metrics"]) # dict con métricas
- Uso desde CLI:
evalcards --y_true y_true.csv --y_pred y_pred.csv --proba proba.csv --out report.md --export-json report.json
# imprime rutas y crea report.md + report.json
Errores y validaciones
- Longitudes incompatibles entre
y_trueyy_pred⇒ error. y_probafuera de[0,1]o filas que no suman ~1 en multiclase ⇒ resultados indefinidos; valida antes de llamar.- AUC puede no calcularse si falta alguna clase; el código ignora silenciosamente métricas imposibles y no rompe el reporte.
Para más ejemplos y detalles (CLI, multi-label, forecasting) ver la Guía completa.
Ejemplos breves
Binaria
make_report(y_true, y_pred, y_proba=proba, path="rep_bin.md", title="Binaria")
Multiclase
make_report(y_true, y_pred, y_proba=proba_matrix,
labels=["A","B","C"], path="rep_multi.md", title="Multiclase OvR")
Regresión
make_report(y_true, y_pred, path="rep_reg.md", title="Regresión")
Forecast
make_report(y_test, y_hat, task="forecast", season=12, insample=y_train,
path="rep_forecast.md", title="Forecast")
Ejemplo de uso multilenguaje
make_report(y_true, y_pred, path="reporte.md", lang="es", title="Mi reporte")
make_report(y_true, y_pred, path="report_en.md", lang="en", title="My report")
Para una introducción paso a paso y ejemplos completos, ver la Guía completa.