CheChe


import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sheshe import CheChe

X, y = load_iris(return_X_y=True)
che = CheChe().fit(X, y, max_pairs=1)
che.plot_classes(X, y)
plt.show()

Calcula fronteras de casco convexo para pares de características seleccionados y ofrece visualizaciones 2D simples.

Útil para explorar fronteras de decisión o formas de clusters, puede submuestrear puntos mediante mapping_level y trazar fronteras por clase o para funciones de puntuación escalares.

Las fronteras también pueden seguir el contorno de una función de puntuación especificando score_frontier.

Formulación matemática

Para el par de características (i,j), CheChe proyecta muestras con P_{ij}(x) = (x_i, x_j). QuickHull construye el casco convexo H de estas proyecciones.

La función de decisión devuelve la distancia negativa desde el punto proyectado al centroide del casco: -‖P_{ij}(x) - c_H‖.

Ejemplo


from sheshe import CheChe
cc = CheChe()
cc.fit(X, y)
cc.plot_classes(X, y)

Ejemplos de uso


from sheshe import CheChe

che = CheChe(random_state=0)
che.fit(X, y)                      # fit

from sheshe import CheChe

che = CheChe(random_state=0)
che.fit_predict(X, y)              # fit_predict

from sheshe import CheChe

che = CheChe(random_state=0).fit(X, y)
che.predict(X)                     # predict

from sheshe import CheChe

che = CheChe(random_state=0).fit(X, y)
che.predict_proba(X)               # predict_proba

from sheshe import CheChe

che = CheChe(random_state=0).fit(X, y)
che.predict_regions(X)             # predict_regions

from sheshe import CheChe

che = CheChe(random_state=0).fit(X, y)
che.decision_function(X)           # decision_function

from sheshe import CheChe

che = CheChe(random_state=0).fit(X, y)
che.save("che.joblib")             # save

from sheshe import CheChe

che = CheChe.load("che.joblib")

Ejemplos adicionales


from sklearn.datasets import load_iris
from sheshe import CheChe

X, y = load_iris(return_X_y=True)
ch = CheChe().fit(
    X,
    y,
    feature_names=["sepal length", "sepal width", "petal length", "petal width"],
    mapping_level=2,  # usa una de cada dos muestras
)
ch.plot_classes(X, y)

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=200).fit(X, y)
CheChe().fit(X, y, score_model=model)

score_fn = lambda Z: model.predict_proba(Z)[:, 0]
CheChe().fit(X, score_fn=score_fn)

che = CheChe().fit(X, score_fn=score_fn, score_frontier=0.8, grid_res=40)
che.plot_pairs(X)

Parámetros

  • random_state (int o None, por defecto None): semilla para reproducibilidad.

Opciones de entrenamiento

El método fit acepta argumentos adicionales similares a la API de ShuShu:

  • score_fn (callable, opcional): función de puntuación escalar cuando no se proporciona y.
  • feature_names (list[str] o None): nombres de las características.
  • score_model (estimador, opcional): modelo usado para derivar probabilidades de clase.
  • score_fn_multi (callable, opcional): función de puntuación multiclase.
  • score_fn_per_class (list[callable], opcional): funciones de puntuación por clase.
  • max_pairs (int o None, por defecto 10): número máximo de pares de características a analizar.
  • mapping_level (int o None, por defecto None): nivel de submuestreo para la computación de fronteras.
  • score_frontier (float, opcional): nivel del contorno para fronteras basadas en la función de puntuación.
  • grid_res (int, por defecto 200): resolución de la malla de evaluación para fronteras basadas en puntuación.

Métodos

  • fit(X, y=None, **kwargs) – estima fronteras 2D para pares de características.
  • fit_predict(X, y=None, **kwargs) – entrena el modelo y retorna predicciones inmediatamente.
  • predict(X) – asigna identificadores de región o etiquetas de clase.
  • predict_proba(X) – devuelve probabilidades de clase en modo multiclase.
  • predict_regions(X) – DataFrame con etiquetas e IDs de región.
  • decision_function(X) – distancias negativas a los centros de región.
  • plot_pairs(X, class_index=None, feature_names=None, show_histograms=False) – gráficos de dispersión con fronteras superpuestas para pares almacenados y opcionales histogramas marginales.
  • plot_classes(X, y, ...) – grafica fronteras para cada clase en modo supervisado.