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]oNone, por defectoNone): nombres para cada característica usada en las reglas generadas.q_box(float, por defecto0.05): cuantil usado para calcular cajas robustas alineadas a los ejes.k_pairs(int, por defecto2): número de proyecciones 2D informativas a incluir.decimals(int, por defecto2): precisión decimal en las reglas emitidas.cap_threshold(float, por defecto6.393): umbral z-score para marcar radios limitados.near_const_tol(float, por defecto0.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]]oNone): límites estrictos para cada característica para recortar cajas.include_center_in_box(bool, por defectoTrue): 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.