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(intoNone, por defectoNone): 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 proporcionay.feature_names(list[str]oNone): 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(intoNone, por defecto10): número máximo de pares de características a analizar.mapping_level(intoNone, por defectoNone): 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 defecto200): 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.