Agrupamiento inductivo con Scikit-Learn

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, aprenderemos sobre el agrupamiento inductivo, un método que extiende el agrupamiento mediante la inducción de un clasificador a partir de las etiquetas de los clusters. Usaremos la librería scikit-learn en Python para implementar un meta-estimador que extiende el agrupamiento.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje su retroalimentación después de la sesión y resolveremos rápidamente el problema para usted.

Generar datos de entrenamiento

En este paso, generaremos algunos datos de entrenamiento a partir del agrupamiento. Usaremos la función make_blobs de scikit-learn para generar 5000 muestras con 3 clusters que tienen desviaciones estándar y centros diferentes.

X, y = make_blobs(
    n_samples=5000,
    cluster_std=[1.0, 1.0, 0.5],
    centers=[(-5, -5), (0, 0), (5, 5)],
    random_state=42,
)

Entrenar el algoritmo de agrupamiento

En este paso, entrenaremos un algoritmo de agrupamiento con los datos de entrenamiento generados y obtendremos las etiquetas de los clusters. Usaremos AgglomerativeClustering de scikit-learn para entrenar el algoritmo con 3 clusters.

clusterer = AgglomerativeClustering(n_clusters=3)
cluster_labels = clusterer.fit_predict(X)

Generar nuevas muestras

En este paso, generaremos nuevas muestras y las graficaremos junto con el conjunto de datos original. Usaremos nuevamente la función make_blobs para generar 10 nuevas muestras.

X_new, y_new = make_blobs(
    n_samples=10, centers=[(-7, -1), (-2, 4), (3, 6)], random_state=42
)

Declarar el modelo de aprendizaje inductivo

En este paso, declararemos el modelo de aprendizaje inductivo que se utilizará para predecir la pertenencia a un cluster de instancias desconocidas. Usaremos RandomForestClassifier de scikit-learn como clasificador.

classifier = RandomForestClassifier(random_state=42)
inductive_learner = InductiveClusterer(clusterer, classifier).fit(X)

Predecir la pertenencia a un cluster para instancias desconocidas

En este paso, usaremos el modelo de aprendizaje inductivo para predecir la pertenencia a un cluster de las nuevas muestras generadas. Usaremos la función predict de la clase InductiveClusterer y graficaremos las nuevas muestras con sus posibles clusters.

probable_clusters = inductive_learner.predict(X_new)

plt.subplot(133)
plot_scatter(X, cluster_labels)
plot_scatter(X_new, probable_clusters)
plt.title("Classify unknown instances")

Resumen

En este laboratorio, aprendimos sobre el agrupamiento inductivo, un método que extiende el agrupamiento mediante la inducción de un clasificador a partir de las etiquetas de los clusters. Usamos la biblioteca scikit-learn en Python para implementar un meta-estimador que extiende el agrupamiento y entrenamos un algoritmo de agrupamiento con los datos de entrenamiento generados. También generamos nuevas muestras y usamos el modelo de aprendizaje inductivo para predecir la pertenencia a un cluster de las nuevas muestras.