RegionInterpreter


import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sheshe import ModalBoundaryClustering, RegionInterpreter

iris = load_iris()
X, y = iris.data, iris.target
sh = ModalBoundaryClustering().fit(X, y)
cards = RegionInterpreter(feature_names=iris.feature_names).summarize(sh.regions_)
sh.plot_classes(X, y)
plt.show()

Convierte objetos ClusterRegion en conjuntos de reglas compactos y legibles. Resume cada región con cajas alineadas a los ejes, destaca proyecciones informativas y ofrece utilidades como pretty_print para reportes. Backends opcionales de LLM pueden transformar los resúmenes en descripciones en lenguaje natural.

Formulación matemática

Para cada característica j, una regla alineada al eje usa cuantiles [Q_q(x_j), Q_{1-q}(x_j)], capturando aproximadamente 1-2q de los datos.

Los radios limitados se marcan usando el z-score z=(r-μ)/σ cuando |z| > cap_threshold.

Ejemplo: con q_box=0.05 y valores 1‑10, la regla es [1.45, 9.55]. Un radio 3 con media 2 y σ=0.3 da z≈3.3.

Ejemplo


from sheshe import RegionInterpreter
ri = RegionInterpreter(feature_names=["sepal", "petal"])
summary = ri.summarize(region)

Ejemplos de uso


from sheshe import RegionInterpreter

ri = RegionInterpreter(feature_names=["sepal", "petal"])
ri.summarize(region)       # resumir una región

from sheshe import RegionInterpreter

ri = RegionInterpreter(feature_names=["sepal", "petal"])
ri.summarize([region])     # resumir una lista de regiones

Ejemplo de interpretabilidad


from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sheshe import ModalBoundaryClustering, RegionInterpreter

iris = load_iris()
X, y = iris.data, iris.target

sh = ModalBoundaryClustering(
    base_estimator=RandomForestClassifier(random_state=0),
    task="classification",
).fit(X, y)

# Resumen tabular de las regiones
print(sh.interpretability_summary(iris.feature_names).head())

# Reglas legibles por región
cards = RegionInterpreter(feature_names=iris.feature_names).summarize(sh.regions_)
RegionInterpreter.pretty_print(cards)

Parámetros

  • feature_names (list[str] o None, por defecto None): nombres para cada característica usada en las reglas generadas.
  • q_box (float, por defecto 0.05): cuantil usado para calcular cajas robustas alineadas a los ejes.
  • k_pairs (int, por defecto 2): número de proyecciones 2D informativas a incluir.
  • decimals (int, por defecto 2): precisión decimal en las reglas emitidas.
  • cap_threshold (float, por defecto 6.393): umbral z-score para marcar radios limitados.
  • near_const_tol (float, por defecto 0.12): tolerancia para reportar dimensiones casi constantes.
  • inverse_transform (callable, opcional): función aplicada a los puntos antes de la extracción de reglas (por ejemplo, desescalado).
  • feature_bounds (Sequence[Tuple[float, float]] o None): límites estrictos para cada característica para recortar cajas.
  • include_center_in_box (bool, por defecto True): incluye el centro de la región al calcular cajas alineadas.

Métodos

  • summarize(regions) – devuelve una lista de diccionarios con encabezados, reglas alineadas a ejes y proyecciones de pares para las regiones proporcionadas.