Python Tutorial

Apprentissage automatique Python – K-means


Sur cette page, Infodewi.com collabore avec
Académie des sciences des données de NYC
pour délivrer des contenus de formation numériques à nos étudiants.


K-signifie

K-means est une méthode d’apprentissage non supervisée pour regrouper des points de données. L’algorithme divise de manière itérative les points de données en K clusters en minimisant la variance dans chaque cluster.

Ici, nous allons vous montrer comment estimer la meilleure valeur pour K en utilisant la méthode du coude, puis utiliser le clustering K-means pour regrouper les points de données en clusters.


Comment ça marche?

Tout d’abord, chaque point de données est attribué au hasard à l’un des K clusters. Ensuite, nous calculons le centroïde (fonctionnellement le centre) de chaque cluster et réaffectons chaque point de données au cluster avec le centroïde le plus proche. Nous répétons ce processus jusqu’à ce que les affectations de cluster pour chaque point de données ne changent plus.

Le clustering K-means nous oblige à sélectionner K, le nombre de clusters dans lesquels nous voulons regrouper les données. La méthode du coude nous permet de représenter graphiquement l’inertie (une métrique basée sur la distance) et de visualiser le point auquel elle commence à diminuer de manière linéaire. Ce point est appelé « eblow » et est une bonne estimation de la meilleure valeur pour K sur la base de nos données.

Exemple

Commencez par visualiser quelques points de données :

importer matplotlib.pyplot en tant que plt

x = [4, 5, 10, 4,
3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]

plt.scatter(x, y)
plt.show()

Résultat

Exemple d’exécution »


PUBLICITÉ


Maintenant, nous utilisons la méthode du coude pour visualiser l’inertie pour différentes valeurs de K :

Exemple

depuis sklearn.cluster importer KMeans

données = liste(zip(x, y))
inerties = []

pour je dans la plage (1,11):
kmeans = KMeans(n_clusters=i)
kmeans.fit(données)
inertias.append(kmeans.inertia_)

plt.plot(range(1,11), inerties, marker= »o »)
plt.title(‘Méthode du coude’)
plt.xlabel(‘Nombre de clusters’)
plt.ylabel(‘Inertie’)
plt.show()

Résultat

Exemple d’exécution »

La méthode du coude montre que 2 est une bonne valeur pour K, donc on se recycle et on visualise le résultat :

Exemple

kmeans = KMeans(n_clusters=2)
kmeans.fit(données)

plt.scatter(x, y, c=kmeans.labels_)
plt.show()

Résultat

Exemple d’exécution »

Exemple expliqué

Importez les modules dont vous avez besoin.

import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

Vous pouvez en savoir plus sur le module Matplotlib dans notre « Tutoriel Matplotlib.

scikit-learn est une bibliothèque populaire pour l’apprentissage automatique.

Créez des tableaux qui ressemblent à deux variables dans un ensemble de données. Notez que bien que nous n’utilisions ici que deux variables, cette méthode fonctionnera avec n’importe quel nombre de variables :

x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]

Transformez les données en un ensemble de points :

data = list(zip(x, y))
print(data)

Résultat:

[(4, 21), (5, 19), (10, 24), (4, 17), (3, 16), (11, 25), (14, 24), (6, 22), (10, 21), (12, 21)]

Afin de trouver la meilleure valeur pour K, nous devons exécuter K-means sur nos données pour une plage de valeurs possibles. Nous n’avons que 10 points de données, donc le nombre maximum de clusters est de 10. Ainsi, pour chaque valeur K dans la plage (1,11), nous formons un modèle K-means et traçons l’intertie à ce nombre de clusters :

inertias = []

pour je dans la plage (1,11):
kmeans = KMeans(n_clusters=i)
kmeans.fit(données)
inertias.append(kmeans.inertia_)

plt.plot(range(1,11), inerties, marker= »o »)
plt.title(‘Méthode du coude’)
plt.xlabel(‘Nombre de clusters’)
plt.ylabel(‘Inertie’)
plt.show()

Résultat:

Nous pouvons voir que le « coude » sur le graphique ci-dessus (où l’interia devient plus linéaire) est à K=2. Nous pouvons ensuite ajuster notre algorithme K-means une fois de plus et tracer les différents clusters attribués aux données :

kmeans = KMeans(n_clusters=2)
kmeans.fit(data)

plt.scatter(x, y, c=kmeans.labels_)
plt.show()

Résultat:


#Apprentissage #automatique #Python #Kmeans

Articles similaires

Bouton retour en haut de la page