0

Ist es besser, meinen eigenen K-Means-Algorithmus in Python zu implementieren oder den vordefinierten K-Mean-Algorithmus in Python-Bibliotheken wie zB Scikit-Learn zu verwenden?K-Means-Implementierung in Python

+7

Hängt davon ab, wie Sie "besser" definieren. Die Bibliotheksversion wird mit ziemlicher Sicherheit effizienter sein, aber Sie könnten viel selbst lernen. – River

Antwort

1

, bevor er antwortete, die hier besser ist, ist eine kurze Erinnerung an den Algorithmus:

  1. „Wählen“ die Anzahl der Cluster K
  2. Initiieren Ihre ersten Centroide
  3. Für jeden Punkt , finden Sie die nächsten Schwerpunkt nach einer Distanzfunktion D
  4. Wenn alle Punkte auf einem Cluster zugeordnet werden, die Berechnung der barycenter des Clusters, die
  5. Wiederholen Schritt 3 und Schritt seinen neuen Zentroid geworden 4. bis Konvergenz

Wie bereits betont, die Algorithmus hängt von verschiedenen Parametern ab:

  • Die Anzahl der Cluster
  • Ihre erste Schwerpunktpositionen
  • Eine Abstandsfunktion Abstand zwischen einem beliebigen Punkt und Zentroid
  • , einer Funktion zu berechnen, die barycenter jeden neuen Cluster
  • A Konvergenz metric
  • ...

Wenn keine der oben genannten berechnen ist Ihnen vertraut, und Sie möchten die Rolle jedes Parameters verstehen, würde ich empfehlen, es auf niedrigdimensionalen Datensätzen zu implementieren. Darüber hinaus entsprechen die implementierten Python-Bibliotheken möglicherweise nicht Ihren spezifischen Anforderungen - obwohl sie gute Tuning-Möglichkeiten bieten.

Wenn Sie es schnell mit einem großen Bild Verständnis verwenden möchten, können Sie vorhandene Implementierung verwenden - Scikit-lernen wäre eine gute Wahl.