Apprentissage automatique Python – K-means

Sur cette page, Infodewi.com collabore avec
Académie des sciences des données de NYCpour 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