Chuchu
Exploración interactiva de fronteras de decisión con la tubería Chuchu.
El siguiente ejemplo reproduce la configuración compartida por el equipo para Iris, generando tres visualizaciones distintas con los planos, cúbicas y flechas de exploración.
import logging
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sheshe import Chuchu, ChuchuConfig, ChangePointConfig
from sheshe.chuchu import (
compute_frontier_planes_weighted,
normalize_pair_order,
plot_frontiers_implicit_interactive,
)
iris = load_iris()
X = iris.data.astype(float)
y = iris.target.astype(int)
feature_names = iris.feature_names
model = RandomForestClassifier(n_estimators=150, random_state=0).fit(X, y)
cfg = ChuchuConfig(
log_level=logging.WARNING,
pair_quota=20,
max_pairs_total=120,
secant_iters=2,
final_bisect=8,
alpha_change=0.65,
distance_metric="l3",
min_pair_margin_end=0.02,
min_logit_gain=0.2,
random_state=42,
)
chuchu = Chuchu(cfg).fit(X, model)
records = chuchu.records_
planes = compute_frontier_planes_weighted(records, prefer_cp=True)
fig1 = plot_frontiers_implicit_interactive(
records,
X,
y,
planes=planes,
dims=(0, 1, 2),
plane_mode="slice",
slice_filter_tol=0.12,
extend=1.15,
clamp_extend_to_X=True,
feature_names=feature_names,
)
planes_softmax = compute_frontier_planes_weighted(records, prefer_cp=True, weight_map="softmax")
fig2 = plot_frontiers_implicit_interactive(
records,
X,
y,
planes=planes_softmax,
dims=(0, 1, 3),
plane_mode="fit_dims",
slice_filter_tol=2.9,
extend=1.65,
clamp_extend_to_X=True,
feature_names=feature_names,
)
cp_cfg = ChangePointConfig(enabled=True, mode="treefast", per_record_max_points=32)
records_cp = Chuchu(cfg, cp_cfg).fit(X, model).records_
records_norm = normalize_pair_order(records_cp, make_copy=True)
planes_cp = compute_frontier_planes_weighted(records_norm, prefer_cp=True, weight_map="softmax")
fig3 = plot_frontiers_implicit_interactive(
records_norm,
X,
y,
planes=planes_cp,
dims=(0, 1, 3),
plane_mode="fit_dims",
slice_filter_tol=2.9,
extend=1.65,
clamp_extend_to_X=True,
feature_names=feature_names,
)
Las figuras devueltas por plot_frontiers_implicit_interactive son objetos de Plotly y pueden manipularse de forma interactiva en cuadernos y entornos compatibles.