ho set di dati (di 5000 punti con 4 dimensioni) che ho cluster utilizzando Kmeans in R.ordinazione punti cluster utilizzando Kmeans e R
voglio ordinare i punti in ogni cluster in base alla distanza di il centro di quel gruppo.
Molto semplicemente, i dati assomiglia a questo (sto usando un sottoinsieme di testare diversi approcci):
id Ans Acc Que Kudos
1 100 100 100 100
2 85 83 80 75
3 69 65 30 29
4 41 45 30 22
5 10 12 18 16
6 10 13 10 9
7 10 16 16 19
8 65 68 100 100
9 36 30 35 29
10 36 30 26 22
In primo luogo, ho usato il seguente metodo per raggruppare l'insieme di dati in 2 gruppi:
(result <- kmeans(data, 2))
Questo restituisce un oggetto Kmeans che ha il seguente methods: cluster, centers etc.
Ma io Canno t capire come confrontare ciascun punto e produrre una lista ordinata.
In secondo luogo, ho provato l'approccio seriazione, come suggerito da un altro SO utente here
io uso questi comandi:
clus <- kmeans(scale(x, scale = FALSE), centers = 3, iter.max = 50, nstart = 10)
mns <- sapply(split(x, clus$cluster), function(x) mean(unlist(x)))
result <- dat[order(order(mns)[clus$cluster]), ]
che sembra produrre un elenco ordinato, ma se mi legano al etichettato cluster (utilizzando il seguente comando cbind):
result <- cbind(x[order(order(mns)[clus$cluster]), ],clus$cluster)
ottengo il seguente risultato, che non sembra essere ordine Ed in modo corretto:
id Ans Acc Que Kudos clus
1 3 69 65 30 29 1
2 4 41 45 30 22 1
3 5 10 12 18 16 2
4 6 10 13 10 9 2
5 7 10 16 16 19 2
6 9 36 30 35 29 2
7 10 36 30 26 22 2
8 1 100 100 100 100 1
9 2 85 83 80 75 2
10 8 65 68 100 100 2
non voglio essere iscritto comandi, volenti o nolenti, ma capire come funziona l'approccio. Se qualcuno potesse aiutare o diffondere un po 'di luce su questo, sarebbe davvero grandioso.
EDIT :::::::::::
Come i cluster possono essere facilmente tracciati, immagino ci sia un modo più semplice per ottenere e classificare le distanze tra punti e il centro.
I centri per i cluster di cui sopra (quando si utilizza k = 2) sono i seguenti. Ma non so come ottenere e confrontare questo con ogni singolo punto.
Ans Accep Que Kudos
1 83.33333 83.66667 93.33333 91.66667
2 30.28571 30.14286 23.57143 20.85714
NB ::::::::
non ho bisogno di top uso Kmeans ma voglio specificare il numero di cluster e recuperare un elenco ordinato di punti da tali cluster.
Questa è una buona domanda ... controllare che non si utilizza l'ID di raggruppare (Credo che ci sono casi in cui può essere utile, ma è improbabile) – Seth
freddo, io non voglio raggruppare gli id, supervisione a mio nome. Correggerò la domanda grazie..j – slotishtype
Credo che 'kmeans()' restituisca anche i centri del cluster finale.Da lì, non dovrebbe essere troppo difficile calcolare la distanza da ciascun punto al centro del suo cluster. –