Ho bisogno di raggruppare un semplice insieme di dati univariati in un numero predefinito di cluster. Tecnicamente sarebbe più vicino al binning o all'ordinamento dei dati poiché è solo 1D, ma il mio capo lo chiama clustering, quindi mi limiterò a seguire quel nome. Il metodo corrente utilizzato dal sistema in cui mi trovo è K-means, ma sembra eccessivo.Come si può utilizzare la stima della densità del kernel come metodo di clustering 1D in scikit?
Esiste un modo migliore per eseguire questa attività?
Le risposte ad alcuni altri post menzionano KDE (Kernel Density Estimation), ma questo è un metodo di stima della densità, come funzionerebbe?
Vedo come KDE restituisce una densità, ma come faccio a distinguere i dati in contenitori?
Come è possibile avere un numero fisso di contenitori indipendenti dai dati (è uno dei miei requisiti)?
In particolare, in che modo si potrebbe trarre vantaggio dall'utilizzo di scikit?
Il mio file di input appare come:
str ID sls
1 10
2 11
3 9
4 23
5 21
6 11
7 45
8 20
9 11
10 12
Voglio gruppo il numero SLS in cluster o bidoni, in modo tale che:
Cluster 1: [10 11 9 11 11 12]
Cluster 2: [23 21 20]
Cluster 3: [45]
E il mio file di output sarà simile:
str ID sls Cluster ID Cluster centroid
1 10 1 10.66
2 11 1 10.66
3 9 1 10.66
4 23 2 21.33
5 21 2 21.33
6 11 1 10.66
7 45 3 45
8 20 2 21.33
9 11 1 10.66
10 12 1 10.66
Qual è il problema con k-means? Prestazione? –
kmeans è più efficiente di kde – lejlot
@DavidMaust 1) Quando ho provato a eseguire k-means di sklearn su dati univariati, ho iniziato a ricevere errori. Ho dovuto ingannarlo facendolo raggruppare su dati 2D che erano copie identiche dei dati 1d originali. 2) Secondo questo [post] (http://stackoverflow.com/a/11516590/3967806) è una cattiva idea. –