Ich schrieb ein einfaches Skript, das hierarchische Clustering auf einem einfachen Test-Dataset durchführen soll. Kann scipy hierarchische Clustering nicht funktionieren
Ich habe die Funktion fclusterdata als einen Kandidaten gefunden, um meine Daten in zwei Cluster zu clustern. Es benötigt zwei obligatorische Aufrufparameter: den Datensatz und einen Schwellenwert. Das Problem ist, ich konnte keinen Schwellenwert finden, der die erwarteten zwei Cluster ergeben würde.
Ich würde mich freuen, wenn mir jemand sagen kann, was ich falsch mache. Ich würde auch glücklich sein, wenn jemand auf anderen Ansätzen zeigen könnte, die für meinen Clustering besser geeignet wäre (Ich mag ausdrücklich vorher die Anzahl der Cluster angeben, zu vermeiden.)
Hier ist mein Code:
import time
import scipy.cluster.hierarchy as hcluster
import numpy.random as random
import numpy
import pylab
pylab.ion()
data = random.randn(2,200)
data[:100,:100] += 10
for i in range(5,15):
thresh = i/10.
clusters = hcluster.fclusterdata(numpy.transpose(data), thresh)
pylab.scatter(*data[:,:], c=clusters)
pylab.axis("equal")
title = "threshold: %f, number of clusters: %d" % (thresh, len(set(clusters)))
print title
pylab.title(title)
pylab.draw()
time.sleep(0.5)
pylab.clf()
Hier ist die Ausgabe:
threshold: 0.500000, number of clusters: 129
threshold: 0.600000, number of clusters: 129
threshold: 0.700000, number of clusters: 129
threshold: 0.800000, number of clusters: 75
threshold: 0.900000, number of clusters: 75
threshold: 1.000000, number of clusters: 73
threshold: 1.100000, number of clusters: 58
threshold: 1.200000, number of clusters: 1
threshold: 1.300000, number of clusters: 1
threshold: 1.400000, number of clusters: 1
'Kriterium = "Abstand" passing' es fest. Habe nicht bemerkt, dass diese Parameter verwandt waren. Vielen Dank! – moooeeeep