Opciones KMeans Python
En Python, KMeans
de sklearn.cluster
es uno de los métodos más populares para realizar clustering. Aquí te explico las opciones clave y su propósito, con ejemplos de uso para facilitar su comprensión.
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt
1. n_clusters
- Descripción: Número de clusters (o grupos) en los que queremos dividir los datos.
- Ejemplo: Si quieres dividir datos en 3 grupos.
data = np.random.rand(100, 2)
kmeans = KMeans(n_clusters=3)
kmeans.fit(data)
plt.scatter(data[:, 0], data[:, 1], c=kmeans.labels_)
plt.show()
2. init
- Descripción: Método de inicialización de los centros de los clusters. Las opciones más comunes son:
"k-means++"
(por defecto): Mejora la convergencia."random"
: Asigna los centroides iniciales al azar.- Ejemplo: Usar inicialización aleatoria.
kmeans = KMeans(n_clusters=3, init="random")
kmeans.fit(data)
3. n_init
- Descripción: Número de veces que se ejecuta el algoritmo K-Means con diferentes inicializaciones para encontrar el mejor resultado.
- Ejemplo: Ejecutar 20 inicializaciones.
kmeans = KMeans(n_clusters=3, n_init=20)
kmeans.fit(data)
4. max_iter
- Descripción: Número máximo de iteraciones que el algoritmo ejecutará en una única ejecución.
- Ejemplo: Establecer un máximo de 500 iteraciones para convergencia.
kmeans = KMeans(n_clusters=3, max_iter=500)
kmeans.fit(data)
5. tol
- Descripción: Tolerancia para la convergencia. El algoritmo parará si el desplazamiento de los centroides entre iteraciones es menor a este valor.
- Ejemplo: Tolerancia más estricta.
kmeans = KMeans(n_clusters=3, tol=0.0001)
kmeans.fit(data)
6. random_state
- Descripción: Controla la aleatoriedad de las inicializaciones para obtener resultados reproducibles.
- Ejemplo: Fijar un
random_state
para reproducibilidad.
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(data)
7. algorithm
- Descripción: Algoritmo usado en el cálculo:
"lloyd"
: Método original de Lloyd."elkan"
: Ahorra tiempo computacional con distancias euclidianas.
- Ejemplo: Usar algoritmo Elkan.
kmeans = KMeans(n_clusters=3, algorithm="elkan")
kmeans.fit(data)
Visualización completa del clustering con todas las opciones
kmeans = KMeans(
n_clusters=3, init="k-means++", n_init=10, max_iter=300,
tol=0.0001, random_state=42, algorithm="auto"
)
kmeans.fit(data)
plt.scatter(data[:, 0], data[:, 1], c=kmeans.labels_)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=200, c="red", marker="X")
plt.title("KMeans clustering con diferentes opciones")
plt.show()