Clustering k-means

Clustering k-means
Le clustering K-Means est un algorithme d'apprentissage automatique non supervisé. Si nous comparons l'algorithme de clustering K-Means non supervisé avec l'algorithme supervisé, il n'est pas nécessaire de former le modèle avec les données étiquetées. L'algorithme K-means est utilisé pour classer ou regrouper différents objets en fonction de leurs attributs ou fonctionnalités en un nombre de groupes. Ici, k est un numéro entier. Le k-means calcule la distance (en utilisant la formule de distance), puis trouve la distance minimale entre les points de données et le cluster centroïde pour classer les données.

Comprenons les k-means en utilisant le petit exemple en utilisant les 4 objets, et chaque objet a 2 attributs.

Nom d'objets Attribut_x Attribut_y
M1 1 1
M2 2 1
M3 4 3
M4 5 4

K-means pour résoudre l'exemple numérique:

Pour résoudre le problème numérique ci-dessus via K-means, nous devons suivre les étapes suivantes:

L'algorithme K-Means est très simple. Tout d'abord, nous devons choisir n'importe quel nombre aléatoire de K, puis choisir les centroïdes ou le centre des clusters. Pour choisir les centroïdes, nous pouvons choisir n'importe quel nombre aléatoire d'objets pour l'initialisation (dépend de la valeur de k).

Les étapes de base de l'algorithme K-Means sont les suivantes:

  1. Continue de courir jusqu'à ce qu'aucun objet ne se déplace de leurs centroïdes (stable).
  2. Nous choisissons d'abord des centroïdes au hasard.
  3. Ensuite, nous déterminons la distance entre chaque objet et les centroïdes.
  4. Regrouper les objets en fonction de la distance minimale.

Ainsi, chaque objet a deux points comme X et Y, et ils représentent l'espace graphique comme suit:

Nous choisissons donc initialement la valeur de k = 2 comme aléatoire pour résoudre notre problème ci-dessus.

Étape 1: Initialement, nous choisissons les deux premiers objets (1, 1) et (2, 1) comme nos centroïdes. Le graphique ci-dessous affiche la même chose. Nous appelons ces centroïdes C1 (1, 1) et C2 (2,1). Ici, nous pouvons dire que C1 est Group_1 et C2 est Group_2.

Étape 2: Maintenant, nous allons calculer chaque point de données d'objet vers des centroïdes en utilisant la formule de distance euclidienne.

Pour calculer la distance, nous utilisons la formule suivante.

Nous calculons la distance des objets aux centroïdes, comme indiqué dans l'image ci-dessous.

Nous avons donc calculé chaque distance de point de données de données d'objet à travers la méthode de distance ci-dessus, nous avons finalement obtenu la matrice de distance comme indiqué ci-dessous:

Dm_0 =

0 1 3.61 5 C1 = (1,1)

cluster1

groupe 1
1 0 2.83 4.24 C2 = (2,1)

cluster2

group_2
UN B C D
1 2 4 5 X
1 1 3 4 Y

Maintenant, nous avons calculé la valeur de distance de chaque objet pour chaque centroïde. Par exemple, les points d'objet (1,1) ont une valeur de distance à C1 est 0 et C2 est 1.

Comme, à partir de la matrice de distance ci-dessus, nous découvrons que l'objet (1, 1) a une distance de cluster1 (c1) est 0 et au cluster2 (c2) est 1. Donc, l'objet est proche du cluster1 lui-même.

De même, si nous vérifions l'objet (4, 3), la distance au cluster1 est 3.61 et au cluster2 est 2.83. Ainsi, l'objet (4, 3) se déplacera vers le cluster2.

De même, si vous vérifiez l'objet (2, 1), la distance au cluster1 est 1 et au cluster2 est 0. Donc, cet objet se déplacera vers Cluster2.

Maintenant, selon leur valeur de distance, nous regroupons les points (regroupement d'objets).

G_0 =

UN B C D
1 0 0 0 groupe 1
0 1 1 1 group_2

Maintenant, selon leur valeur de distance, nous regroupons les points (regroupement d'objets).

Et enfin, le graphique ressemblera ci-dessous après avoir fait le clustering (G_0).

Itération_1: Maintenant, nous allons calculer les nouveaux centroïdes à mesure que les groupes initiaux modifiaient en raison de la formule de distance comme indiqué dans le G_0. Ainsi, le groupe_1 n'a qu'un seul objet, donc sa valeur est toujours C1 (1,1), mais le groupe_2 a 3 objets, donc sa nouvelle valeur centroïde est

Ainsi, nouveau C1 (1,1) et C2 (3.66, 2.66)

Maintenant, nous devons à nouveau calculer toute la distance aux nouveaux centroïdes comme nous avons calculé avant.

Dm_1 =

0 1 3.61 5 C1 = (1,1)

cluster1

groupe 1
3.14 2.36 0.47 1.89 C2 = (3.66,2.66)

cluster2

group_2
UN B C D
1 2 4 5 X
1 1 3 4 Y

Itération_1 (regroupement d'objets): Maintenant, au nom du nouveau calcul de la matrice de distance (DM_1), nous le regroupons selon cela. Ainsi, nous passons l'objet M2 de Group_2 à Group_1 comme règle de la distance minimale aux centroïdes, et le reste de l'objet sera le même. Donc, le nouveau regroupement sera comme ci-dessous.

G_1 =

UN B C D
1 1 0 0 groupe 1
0 0 1 1 group_2

Maintenant, nous devons à nouveau calculer les nouveaux centroïdes, car les deux objets ont deux valeurs.

Ainsi, les nouveaux centroïdes seront

Donc, après avoir obtenu les nouveaux centroïdes, le clustering ressemblera ci-dessous:

C1 = (1.5, 1)

C2 = (4.5, 3.5)

Itération_2: Nous répétons l'étape où nous calculons la nouvelle distance de chaque objet aux nouveaux centroïdes calculés. Donc, après le calcul, nous obtiendrons la matrice de distance suivante pour itération_2.

Dm_2 =

0.5 0.5 3.20 4.61 C1 = (1.5, 1)

cluster1

groupe 1
4.30 3.54 0.71 0.71 C2 = (4.5, 3.5)

cluster2

group_2

A B C D

UN B C D
1 2 4 5 X
1 1 3 4 Y

Encore une fois, nous effectuons les affectations de regroupement en fonction de la distance minimale comme nous l'avons fait avant. Donc, après avoir fait cela, nous avons obtenu la matrice de clustering qui est la même que G_1.

G_2 =

UN B C D
1 1 0 0 groupe 1
0 0 1 1 group_2

Comme ici, G_2 == g_1, Donc, aucune itération supplémentaire n'est requise, et nous pouvons nous arrêter ici.

Implémentation K-Means à l'aide de Python:

Maintenant, nous allons implémenter l'algorithme K-means à Python. Pour implémenter les K-means, nous allons utiliser le célèbre ensemble de données IRIS, qui est open-source. Cet ensemble de données a trois classes différentes. Cet ensemble de données a essentiellement quatre fonctionnalités: Longueur sépale, largeur sépale, longueur de pétale et largeur de pétale. La dernière colonne indiquera le nom de la classe de cette ligne comme Setosa.

L'ensemble de données ressemble à ce qui précède:

Pour l'implémentation de Python K-means, nous devons importer les bibliothèques requises. Nous importons donc des pandas, Numpy, Matplotlib et aussi Kmeans de Sklearn.Clutser comme indiqué ci-dessous:

Nous lisons l'iris.Ensemble de données CSV à l'aide de la méthode de Read_CSV Panda et affichera les 10 premiers résultats à l'aide de la méthode de tête.

Maintenant, nous lisons uniquement les fonctionnalités de l'ensemble de données dont nous avons besoin pour former le modèle. Nous lisons donc les quatre fonctionnalités des ensembles de données (longueur sépale, largeur sépale, longueur de pétale, largeur de pétale). Pour cela, nous avons transmis les quatre valeurs d'index [0, 1, 2, 3] dans la fonction ILOC de la trame de données du panda (DF) comme indiqué ci-dessous:

Maintenant, nous choisissons le nombre de clusters au hasard (k = 5). Nous créons l'objet de la classe K-means, puis nous installons notre ensemble de données X dans celui de l'entraînement et de la prédiction comme indiqué ci-dessous:

Maintenant, nous allons visualiser notre modèle avec la valeur K = 5 aléatoire. Nous pouvons clairement voir cinq clusters, mais il semble qu'il n'est pas exact, comme indiqué ci-dessous.

Ainsi, notre prochaine étape consiste à découvrir que le nombre de clusters était précis ou non. Et pour cela, nous utilisons la méthode du coude. La méthode du coude est utilisée pour découvrir le nombre optimal du cluster pour un ensemble de données particulier. Cette méthode sera utilisée pour savoir si la valeur de k = 5 était correcte ou non car nous n'obtenons pas de regroupement clair. Donc, après cela, nous allons au graphique suivant, qui montre que la valeur de k = 5 n'est pas correcte car la valeur optimale se situe entre 3 ou 4.

Maintenant, nous allons à nouveau exécuter le code ci-dessus avec le nombre de clusters k = 4 comme indiqué ci-dessous:

Maintenant, nous allons visualiser le clustering K = 4 Nouvelle build. L'écran ci-dessous montre que maintenant le clustering se fait via les k-means.

Conclusion

Nous avons donc étudié l'algorithme K-Means en code numérique et python. Nous avons également vu comment nous pouvons trouver le nombre de clusters pour un ensemble de données particulier. Parfois, la méthode du coude ne peut pas donner le nombre correct de clusters, donc dans ce cas, il existe plusieurs méthodes que nous pouvons choisir.

Le code de ce blog, avec l'ensemble de données, est disponible sur le lien suivant https: // github.com / shekharpandey89 / k-means