K-significa Clustering con Julia
utilizzando Clustering.jl
Che cos'è il clustering K-significa?
Il clustering K-mean è una metodologia di apprendimento automatico non supervisionata utilizzata per la classificazione dei punti dati. Un insieme di N punti dati è suddiviso in k cluster, ( k è il numero di cluster ). Ogni cluster è focalizzato sul suo centroide ( valore medio ) e i punti/osservazioni nel cluster sono vicini al centroide ( il valore medio ).
Qual è lo scopo?
Lo scopo del clustering K-mean è quello di suddividere un insieme di N punti dati in K cluster con l'obiettivo di ridurre le distanze tra la somma delle distanze al quadrato tra ciascun punto dati e il centro del cluster assegnato (centroide).
Fondamentalmente questo raggrupperà i punti ( con centroidi simili ) insieme.
Con il clustering K-means, la distanza tra un punto dati e un centroide del cluster rappresenta la somiglianza tra il punto dati e il cluster.
Più in generale , il clustering K-means viene utilizzato per vari scopi, come la segmentazione delle immagini, la segmentazione del mercato, il rilevamento delle anomalie, il raggruppamento, ecc...
Come funziona?
Quando i punti dati sono stati assegnati ai cluster, l'algoritmo k significa aggiorna i centroidi calcolando la media dei punti dati assegnati a ciascun cluster. Il centroide aggiornato diventa il nuovo centro del cluster, che rappresenta la media di tutti i punti in quel cluster.
Ogni punto dati nel cluster è stato assegnato dal centroide più vicino al punto dati. Questo viene fatto calcolando le distanze tra ogni punto dati e tutti i centroidi e quindi selezionando il centroide con la distanza minima.
Diamo un'occhiata a un esempio e ad alcune trame...
Di seguito è la mia configurazione.
Aggiungo un seme casuale che rende l'esperimento riproducibile e ho creato alcuni dati, X e 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
Quindi aggiungo le iterazioni, che limiteranno il numero di iterazioni eseguite dall'algoritmo.
iter = 50
Result = kmeans(Z, k; maxiter=iter, display=:iter)
Convergenza dopo 8 iterazioni!
Controllo se ci sono 4 cluster:
nclusters(Result) == 4
Posso anche guardare le assegnazioni del cluster:
h = assignments(Result)
Posso ottenere le dimensioni del cluster:
c = counts(Result)
mu = Result.centers
Trame
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
)
Conclusione
K-means clustering è un utile algoritmo di apprendimento automatico non supervisionato che classifica i punti dati in base alle loro distanze tra i centroidi dei punti dati. Ciò causerà il raggruppamento di punti dati simili.
Le misure di distanza utilizzate potrebbero essere la distanza euclidea o la distanza di Manhattan , che dipenderà dal tipo di dati da raggruppare e questa scelta potrebbe anche avere un impatto significativo sui risultati del clustering K-medie.
Spero che l'articolo ti sia piaciuto e che ti sia stato utile!
Connettiamoci su Linkedin , o github , o seguimi per altri articoli su Julia, R, Python e statistiche applicate!

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































