K-means Clustering avec Julia
en utilisant Clustering.jl
Qu'est-ce que le clustering K-means ?
Le clustering K-means est une méthodologie d'apprentissage automatique non supervisée utilisée pour la classification des points de données. Un ensemble de N points de données est partitionné en k clusters, ( k étant le nombre de clusters ). Chaque cluster est centré sur son centroïde ( valeur moyenne ) et les points/observations du cluster sont proches du centroïde ( la valeur moyenne ).
Quel est le but ?
Le but du clustering K-means est de partitionner un ensemble de N points de données en K clusters dans le but de réduire les distances entre la somme des distances au carré entre chaque point de données et son centre de cluster attribué (centroïde).
Fondamentalement, cela regroupera les points ( avec des centroïdes similaires ).
Avec le clustering K-means, la distance entre un point de données et un centroïde de cluster représente la similarité entre le point de données et le cluster.
Plus largement , le clustering K-means est utilisé à des fins diverses, telles que la segmentation d'images, la segmentation de marché, la détection d'anomalies, le regroupement, etc...
Comment cela marche-t-il?
Lorsque des points de données ont été attribués à des clusters, l'algorithme k signifie met à jour les centroïdes en calculant la moyenne des points de données attribués à chaque cluster. Le centroïde mis à jour devient le nouveau centre du cluster, qui représente la moyenne de tous les points de ce cluster.
Chaque point de données du cluster a été attribué par le centroïde le plus proche du point de données. Cela se fait en calculant les distances entre chaque point de données et tous les centroïdes , puis en sélectionnant le centroïde avec la distance minimale.
Prenons un exemple, et quelques tracés…
Ci-dessous ma configuration.
J'ajoute une graine aléatoire qui rend l'expérience reproductible, et j'ai créé des données, X et Y.
using Clustering, Random, Plots, DataFrames
Random.seed!(1)
X = rand(200);
Y = rand(200)
scatter(X,Y, legend=false , title = "Random Points")
Z = [X Y]'
k = 4
Ensuite, j'ajoute les itérations, ce qui limitera le nombre d'itérations effectuées par l'algorithme.
iter = 50
Result = kmeans(Z, k; maxiter=iter, display=:iter)
Convergence après 8 itérations !
Je vérifie s'il y a 4 clusters :
nclusters(Result) == 4
Je peux aussi regarder les affectations de cluster :
h = assignments(Result)
Je peux obtenir les tailles de cluster :
c = counts(Result)
mu = Result.centers
Parcelles
scatter(X,Y
,legend=false
,title = "Random Points with black centroids"
,xlabel = "X"
,ylabel = "Y"
,group = h
,markersize = 8
);
scatter!(mu[1,:],mu[2,:]
,color = :black
,markersize = 12
)
Conclusion
Le clustering K-means est un algorithme d'apprentissage automatique non supervisé utile qui classe les points de données en fonction de leurs distances entre les centroïdes des points de données. Cela entraînera le regroupement de points de données similaires.
Les mesures de distance utilisées pourraient être la distance euclidienne ou la distance de Manhattan , qui dépendra du type de données regroupées, et ce choix pourrait également avoir un impact significatif sur les résultats de regroupement K-means.
J'espère que vous avez apprécié l'article et que vous l'avez trouvé utile!
Connectez-vous sur Linkedin , ou github , ou suivez-moi pour plus d'articles sur Julia, R, Python et les statistiques appliquées !
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































