K significa agrupamiento simplificado en Python

Contenidos

Visión general

  • ¿Qué es K significa Clustering?
  • Implementación de K significa Clustering
  • WCSS y método de codo para encontrar el número de conglomerados
  • Implementación de Python de K significa Clustering

K means es uno de los algoritmos de aprendizaje automático no supervisados ​​más populares utilizados para resolver problemas de clasificación. K Significa que segrega los datos sin etiquetar en varios grupos, llamados clústeres, en función de tener características similares, patrones comunes.

46668k-means-clustering-algorithm-in-machine-learning-3507448

Tabla de contenido

  1. ¿Qué es la agrupación en clústeres?
  2. ¿Qué es el algoritmo de K significa?
  3. Implementación esquemática de la agrupación en clústeres de KMeans
  4. Elegir el número correcto de clústeres
  5. Implementación de Python

1. ¿Qué es la agrupación en clústeres?

Supongamos que tenemos un número N de conjuntos de datos multivariados sin etiquetar de varios animales como perros, gatos, pájaros, etc. La técnica para segregar conjuntos de datos en varios grupos, sobre la base de tener características y características similares, se denomina Clustering..

Los grupos que se forman se conocen como Clusters. La técnica de agrupación en clústeres se está utilizando en varios campos, como el reconocimiento de imágenes, el filtrado de correo no deseado

La agrupación en clústeres se utiliza en el algoritmo de aprendizaje no supervisado en el aprendizaje automático como se pueden segregar datos multivariados en varios grupos, sin ningún supervisor, sobre la base de un patrón común oculto dentro de los conjuntos de datos.

2. ¿Qué es el algoritmo de K significa?

El algoritmo Kmeans es un algoritmo iterativo que divide un grupo de n conjuntos de datos en k subgrupos / clústeres en función de la similitud y su distancia media desde el centroide de ese subgrupo / formado en particular..

K, aquí está el número predefinido de clusters que formará el algoritmo. Si K = 3, significa que el número de conglomerados que se formarán a partir del conjunto de datos es 3

Pasos del algoritmo de K medias

El funcionamiento del algoritmo K-Means se explica en los siguientes pasos:

Paso 1: Seleccione el valor de K para decidir el número de conglomerados que se formarán.

Paso 2: Seleccione K puntos aleatorios que actuarán como centroides.

Paso 3: Asigne cada punto de datos, en función de su distancia desde los puntos seleccionados al azar (centroide), al centroide más cercano / cercano que formará los grupos predefinidos.

Paso 4: coloque un nuevo centroide de cada grupo.

Paso 5: Repita el paso 3, que reasigna cada punto de datos al nuevo centroide más cercano de cada grupo.

Paso 6: Si ocurre alguna reasignación, vaya al paso 4; de lo contrario, vaya al paso 7.

Paso 7: TERMINAR

3. Implementación esquemática de la agrupación en clústeres de K medias

PASO 1:Elijamos el número k de conglomerados, es decir, K = 2, para segregar el conjunto de datos y colocarlos en diferentes conglomerados respectivos. Elegiremos algunos 2 puntos aleatorios que actuarán como centroide para formar el grupo.

PASO 2: Ahora asignaremos cada punto de datos a un diagrama de dispersión basado en su distancia desde el punto K o centroide más cercano. Se hará dibujando una mediana entre ambos centroides. Considere la siguiente imagen:

PASO 3: los puntos del lado izquierdo de la línea están cerca del centroide azul y los puntos a la derecha de la línea están cerca del centroide amarillo. El de la izquierda forma un grupo con centroide azul y el de la derecha con el centroide amarillo.

PASO 4:repita el proceso eligiendo un nuevo centroide. Para elegir los nuevos centroides, encontraremos el nuevo centro de gravedad de estos centroides, que se muestra a continuación:

PASO 5: A continuación, reasignaremos cada punto de datos al nuevo centroide. Repetiremos el mismo proceso anterior (usando una línea mediana). El punto de datos amarillo en el lado azul de la línea mediana se incluirá en el grupo azul

19873tb6-8189281

PASO 6: A medida que se haya realizado la reasignación, repetiremos el paso anterior de encontrar nuevos centroides.

38346tb5-8462174

PASO 7: Repetiremos el proceso anterior de encontrar el centro de gravedad de los centroides, como se muestra a continuación.

49556tb4-5325801

PASO 8: Después de encontrar los nuevos centroides, dibujaremos nuevamente la línea mediana y reasignaremos los puntos de datos, como en los pasos anteriores.

35981tb3-3268103

PASO 9: Finalmente, segregaremos puntos basados ​​en la línea mediana, de manera que se formen dos grupos y ningún punto diferente se incluya en un solo grupo.

40672tb2-7670322

El grupo final que se está formando es el siguiente

96395pq-2152300

4. Elegir el número correcto de clústeres

El número de clústeres que elegimos para el algoritmo no debe ser aleatorio. Todos y cada uno de los conglomerados se forman calculando y comparando las distancias medias de cada punto de datos dentro de un conglomerado desde su centroide.

Podemos elegir el número correcto de clústeres con la ayuda del método de suma de cuadrados dentro del clúster (WCSS).

WCSS Representa la suma de los cuadrados de las distancias de los puntos de datos en todos y cada uno de los grupos desde su centroide.

La idea principal es minimizar la distancia entre los puntos de datos y el centroide de los conglomerados. El proceso se itera hasta alcanzar un valor mínimo para la suma de distancias.

Para encontrar el valor óptimo de los clústeres, el método del codo sigue los pasos a continuación:

1 Ejecute el agrupamiento de K-medias en un conjunto de datos dado para diferentes valores de K (que van del 1 al 10).

2 Para cada valor de K, calcula el valor WCSS.

3 Traza un gráfico / curva entre los valores WCSS y el número respectivo de conglomerados K.

4 El punto agudo de curvatura o un punto (que parece una articulación del codo) de la trama como un brazo, se considerará como el mejor / óptimo valor de K

5. Implementación de Python

Importar bibliotecas relevantes

import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
from sklearn.cluster import KMeans

Cargando los datos

data = pd.read_csv('Countryclusters.csv')
data
63374snip1-8657293

Graficar los datos

plt.scatter(data['Longitude'],data['Latitude'])
plt.xlim(-180,180)
plt.ylim(-90,90)
plt.show()
48681download208-2988085

Seleccionar la función

 x = data.iloc[:,1:3] # 1t for rows and second for columns
x
46942snip2-9206832

Agrupación

kmeans = KMeans(3)
means.fit(x)

Resultados de la agrupación en clústeres

identified_clusters = kmeans.fit_predict(x)
identified_clusters
array([1, 1, 0, 0, 0, 2])
data_with_clusters = data.copy()
data_with_clusters['Clusters'] = identified_clusters 
plt.scatter(data_with_clusters['Longitude'],data_with_clusters['Latitude'],c=data_with_clusters['Clusters'],cmap='rainbow')
73075download209-8093241

Probar un método diferente (para encontrar no. De grupos para seleccionar)

WCSS y método del codo

wcss=[]
for i in range(1,7):
kmeans = KMeans(i)
kmeans.fit(x)
wcss_iter = kmeans.inertia_
wcss.append(wcss_iter)

number_clusters = range(1,7)
plt.plot(number_clusters,wcss)
plt.title('The Elbow title')
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
38785download2010-9638209

podemos elegir 3 como no. de conglomerados, este método muestra cuál es el buen número de conglomerados.

Con esto termino este blog.
Hola a todos, Namaste
Mi nombre es Pranshu Sharma y soy un entusiasta de la ciencia de datos
Muchas gracias por tomarse su valioso tiempo para leer este blog. Siéntase libre de señalar cualquier error (después de todo, soy un aprendiz) y proporcionar los comentarios correspondientes o dejar un comentario.
Dhanyvaad !!
Realimentación:
Correo electrónico: [email protected]

Los medios que se muestran en este artículo no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.

)?$/gm,"$1")],{type:"text/javascript"}))}catch(e){d="data:text/javascript;base64,"+btoa(t.replace(/^(?:)?$/gm,"$1"))}return d}-->