/ / K-means Cluster bei einer CSV mit (tf-idf Cosinus-Ähnlichkeit, doc_id1, doc_id2)? - Python, CSV, Cluster-Analyse, TF-IDF, Cosinus-Ähnlichkeit

K-means Cluster bei einer CSV mit (tf-idf Cosinus-Ähnlichkeit, doc_id1, doc_id2)? - Python, CSV, Cluster-Analyse, TF-IDF, Cosinus-Ähnlichkeit

Ich habe eine CSV mit folgendem Datensatz:

similarity  | doc_id1   | doc_id2
1           |    34     |     0
1           |    29     |     6
0.997801748 |    22     |    10
0.966014701 |    35     |    16
0.964811948 |    14     |    13

Wenn sich "Ähnlichkeit" auf einen Wert aus tf-idf-Kosinusähnlichkeitsberechnungen bezieht, beziehen sich die doc_ids auf Dokumente. Je ähnlicher also 1 ist, desto ähnlicher sind die beiden Dokumente.

Ich möchte die Dokumente basierend darauf clusternInformationen, aber ich bin mir nicht ganz sicher, wie das geht. Ich habe viel über sphärische K-Means-Clustering gelesen, aber in Bezug auf die Implementierung habe ich es schwer, meinen Kopf darum zu wickeln Bibliothek, die nützlich sein könnte Ist K - der richtige Weg zu gehen?

BEARBEITEN: Diese CSV ist alles, was ich habe, obwohl ich es mir wünscheIch habe keine frequenzbasierten Vektoren, ich tue es nicht. Wenn K-bedeutet, dass ich nicht arbeite, da alles, was ich habe, Ähnlichkeiten sind, gibt es andere Algorithmen, die zu diesen Daten passen würden?

Antworten:

1 für die Antwort № 1

Ich glaube, dass Ihr Problem ist, dass Sie habenEntfernungen, aber K-Means verwendet euklidische Abstände von Zentroiden. Das bedeutet, dass Sie für jedes Dokument einen Vektor benötigen, in Ihrem Fall ziemlich lange Vektoren. Anstelle der berechneten Ähnlichkeit sollten Sie eine Dimension für jedes Wort verwenden, und die Punktzahl für dieses Wort in jedem Dokument würde ihre Koordinate bilden. Mit diesen Vektoren können Sie sklearn.cluster.KMeans verwenden, vorgeschlagen von Sam B.


0 für die Antwort № 2

Ja, wenn Sie Python verwenden, sollten Sie die scikit-learn Paket, speziell die sklearn.cluster.KMeans Funktion:

http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html


0 für die Antwort № 3

K-bedeutet kann keine Entfernungsmatrix verwenden. Es wird keine paarweise Entfernung verwendet, sondern es werden nur Punkt-zu-Zentrum-Abstände verwendet, und die Mittel werden jede Iteration verschieben, so dass dies nicht vorausberechnet werden kann.

Sie können z.B. Hierarchisches Clustering stattdessen. Du könntest auch DBSCAN, OPTICS, ... ausprobieren, aber diese werden wahrscheinlich keine guten Ergebnisse in einer Textsammlung ergeben (naja, es ist nicht so, als ob k-means oder hierarchic auch gut funktionieren würden)