Agrupamiento K-Means++ con Scikit-Learn

Beginner

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

Introducción

En este laboratorio, aprenderemos sobre la inicialización de K-Means++ utilizando la biblioteca scikit-learn en Python. K-Means++ es un algoritmo popular para agrupar datos en grupos basados en similitudes. Se utiliza como la inicialización predeterminada para k-means. En este laboratorio, generaremos datos de muestra, calcularemos las semillas a partir de K-Means++ y graficaremos las semillas de inicialización junto con los datos de muestra.

Consejos sobre la VM

Una vez que se haya iniciado 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 para 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 sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Generar datos de muestra

Utilizaremos la función make_blobs de la biblioteca scikit-learn para generar datos de muestra. Esta función genera cúmulos gaussianos isotrópicos para el agrupamiento. Generaremos 4000 muestras con 4 centros.

## Generate sample data
n_samples = 4000
n_components = 4

X, y_true = make_blobs(
    n_samples=n_samples, centers=n_components, cluster_std=0.60, random_state=0
)
X = X[:, ::-1]

Calcular semillas a partir de K-Means++

Utilizaremos la función kmeans_plusplus de la biblioteca scikit-learn para calcular las semillas a partir de K-Means++. Esta función devuelve los centros iniciales de los clusters que se utilizan para el agrupamiento k-means. Calcularemos 4 clusters utilizando K-Means++.

## Calculate seeds from k-means++
centers_init, indices = kmeans_plusplus(X, n_clusters=4, random_state=0)

Graficar las semillas de inicialización junto con los datos de muestra

Utilizaremos la librería matplotlib para graficar las semillas de inicialización junto con los datos de muestra. Las semillas de inicialización se mostrarán como puntos azules y los datos de muestra se mostrarán como puntos coloreados.

## Plot init seeds along side sample data
plt.figure(1)
colors = ["#4EACC5", "#FF9C34", "#4E9A06", "m"]

for k, col in enumerate(colors):
    cluster_data = y_true == k
    plt.scatter(X[cluster_data, 0], X[cluster_data, 1], c=col, marker=".", s=10)

plt.scatter(centers_init[:, 0], centers_init[:, 1], c="b", s=50)
plt.title("K-Means++ Initialization")
plt.xticks([])
plt.yticks([])
plt.show()

Resumen

En este laboratorio, aprendimos sobre la inicialización de K-Means++ utilizando la biblioteca scikit-learn en Python. Generamos datos de muestra, calculamos las semillas a partir de K-Means++ y graficamos las semillas de inicialización junto con los datos de muestra. K-Means++ es un algoritmo popular para agrupar datos en grupos basados en similitudes y se utiliza como la inicialización predeterminada para k-means.