Ich würde gerne Punkte sammeln, die auf eine benutzerdefinierte Entfernung gegeben werden und seltsamerweise scheint es, dass weder scipy noch sklearn clustering Methoden die Spezifikation einer Abstandsfunktion erlauben.Wie spezifiziert man eine Entfernungsfunktion für das Clustering?
Zum Beispiel, in sklearn.cluster.AgglomerativeClustering
, das einzige, was ich tun kann, ist eine Affinitätsmatrix eingeben (die sehr Speicher-schwer sein wird). Um diese Matrix zu erstellen, wird empfohlen, sklearn.neighbors.kneighbors_graph
zu verwenden, aber ich verstehe nicht, wie ich eine Entfernungsfunktion entweder zwischen zwei Punkten angeben kann. Könnte mich jemand aufklären?
Danke für den Tipp. Ich habe fclusterdata ausprobiert, aber es ist fehlgeschlagen, da es anfängt, das Eingabearray zu doubles zu konvertieren, während mein Array strukturiert ist (es enthält Zeichenfolgen). Wie könnte ich damit umgehen? –
Können Sie Beispieldaten posten? –
Sicher: [(b'FOO ', b'67482', 13167), ..., (b'BAR ', b'32798', 1369)]. Aber ich dachte, eine Möglichkeit, das Problem zu umgehen, wäre, das Clustering-Verfahren für die Indizes (d. H. 1, ..., n) auszuführen und diese Indizes innerhalb der Abstandsfunktion zu verwenden, um die richtigen Daten im Ausgangsarray abzurufen. Übrigens brauche ich das Clustering nicht hierarchisch, also kann ich eine k-Means-Methode anstelle von fclusterdata verwenden. –