[PYTHON] So testen Sie den Friends-of-Friends-Algorithmus mit pyfof

Freunde von Freunden Was ist der Algorithmus?

Der Algorithmus ist super einfach, mit nur einem Parameter, und es sei der Schwellenwert r.

  1. Wenn sich N Punkte im Raum befinden, achten Sie auf einen bestimmten Punkt darin. Die Entfernung von diesem einen Punkt zu den verbleibenden N-1 Punkten wird berechnet, und alles, was kleiner oder gleich r ist, wird als Freund beurteilt.
  2. Konzentrieren Sie sich als Nächstes auf einen anderen Punkt und führen Sie dieselbe Berechnung durch. Wenn mit dem Freund, für den Sie sich zuvor entschieden haben, etwas gemeinsam ist, fügen Sie einen Freund hinzu. Wenn keine gemeinsamen Elemente vorhanden sind, wird eine neue Familie von Freunden erstellt.
  3. Wiederholen Sie dies einfach.

Pyfof installieren

pyfof ist eine Bibliothek, mit der Freunde von Freunden mit Python mit hoher Geschwindigkeit Cluster finden können. Anstatt einfach den Friends-of-Friends-Algorithmus zu implementieren, wurde die Beschleunigung anscheinend durch die Methode R * -tree ermöglicht. (Ich kenne die Details nicht).

Installation ist

python


pip install pyfof

Es war nur OK (@ google colab, 2020.8.19)

Ausführungsbeispiel

python


import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import pyfof

npts = 10000
ndim = 2
nptsperdim = int(npts/ndim)
data = np.vstack((np.random.normal(-1,0.2,(nptsperdim,ndim)),\
                  np.random.normal(1,0.2,(nptsperdim,ndim))))

groups = pyfof.friends_of_friends(data, 0.4)

colors = cm.rainbow(np.linspace(0, 1, len(groups)))
for g,c in zip(groups, colors):
    plt.scatter(data[g,0], data[g,1], color=c, s=3)

plt.show() 

Dann

スクリーンショット 2020-08-19 14.23.44.png

Es kann ordentlich in zwei Klassen unterteilt werden.

Als nächstes, warum nicht eine andere Klasse in die Mitte stellen?

python


npts = 10000
ndim = 2
nptsperdim = int(npts/ndim)
data = np.vstack((np.random.normal(-1,0.2,(nptsperdim,ndim)),\
                  np.random.normal(1,0.2,(nptsperdim,ndim)),\
                  np.random.normal(0.,0.2,(nptsperdim,ndim))))

groups = pyfof.friends_of_friends(data, 0.4) # 0.Wenn es 4 ist, ist es zu groß und alle werden in dieselbe Klasse eingeteilt.

colors = cm.rainbow(np.linspace(0, 1, len(groups)))
for g,c in zip(groups, colors):
    plt.scatter(data[g,0], data[g,1], color=c, s=3)

plt.show()

Dann hatten sie alle die gleiche Farbe, das heißt die gleiche Klasse.

スクリーンショット 2020-08-19 14.25.00.png

Lassen Sie uns den Bereich ein wenig ändern

python


npts = 10000
ndim = 2
nptsperdim = int(npts/ndim)
#Machen Sie Gaußsches Sigma kleiner.
data = np.vstack((np.random.normal(-1,0.1,(nptsperdim,ndim)),\
                  np.random.normal(1,0.1,(nptsperdim,ndim)),\
                  np.random.normal(0.,0.1,(nptsperdim,ndim))))

groups = pyfof.friends_of_friends(data, 0.2) # 0.2 und machen Sie den Standard etwas kleiner. Und das obere Sigma wurde kleiner gemacht.

colors = cm.rainbow(np.linspace(0, 1, len(groups)))
for g,c in zip(groups, colors):
    plt.scatter(data[g,0], data[g,1], color=c, s=3)

plt.show()

Es anschauen

スクリーンショット 2020-08-19 14.27.57.png

Es wurde richtig in 3 Klassen eingeteilt. Dies liegt daran, dass das Gaußsche Sigma reduziert wurde und das Kriterium von 0,4 auf 0,2 reduziert wurde.

Der Code kann auch unter google colab angezeigt werden.

Recommended Posts

So testen Sie den Friends-of-Friends-Algorithmus mit pyfof
Probieren Sie den Variational-Quantum-Eigensolver (VQE) -Algorithmus mit Blueqat aus
Versuchen Sie, das Fizzbuzz-Problem mit Keras zu lösen
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus zu lösen (Theorie)
[Algorithmus x Python] Verwendung der Liste
Wie man die anfängliche Population mit einem genetischen Algorithmus unter Verwendung von DEAP fixiert
Wie man Kaldi mit JUST Corpus trainiert
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus (Python-Code) zu lösen.
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus zu lösen (Ausführungsergebnis)
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
So löschen Sie die angegebene Zeichenfolge mit dem Befehl sed! !! !!
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
[Neo4J] ④ Versuchen Sie, die Diagrammstruktur mit Cypher zu handhaben
[Python] So schreiben Sie den Tabellenstil mit python-pptx um [python-pptx]
Versuchen Sie, den Boden durch Rekursion herauszufordern
Verwendung des Generators
Wie aktualisiere ich mit SQLAlchemy?
Wie man mit Theano besetzt
Wie mit SQLAlchemy ändern?
So trennen Sie Zeichenfolgen mit ','
Wie man RDP auf Fedora31 macht
Wie benutzt man den Dekorateur?
Wie lösche ich mit SQLAlchemy?
So erhöhen Sie die Achse
So starten Sie die erste Projektion
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Versuchen Sie, mit dem Uprobe zu spielen, der Systemtap direkt unterstützt
Suche nach einer Lösung für das N-Queen-Problem mit einem genetischen Algorithmus (2)
So manipulieren Sie das DOM im Iframe mit Selen
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Eine Geschichte über den Umgang mit dem CORS-Problem
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
Versuchen Sie, eine multimodale Verteilung mithilfe des EM-Algorithmus zu modellieren
Versuchen Sie, die verstümmelten Zeichen im angehängten Dateinamen mit Python zu entschlüsseln
Suche nach einer Lösung für das N-Queen-Problem mit einem genetischen Algorithmus (1)
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
Wie berechnet man den Autokorrelationskoeffizienten?
Python: So verwenden Sie Async mit
Verwendung der Zip-Funktion
Verwendung des optparse-Moduls
Versuchen Sie, Facebook mit Python zu betreiben
So verwenden Sie virtualenv mit PowerShell
So installieren Sie Python-Pip mit Ubuntu20.04LTS
Umgang mit unausgeglichenen Daten
Versuchen Sie, sich mit ONNX Runtime zu profilieren
So erhalten Sie die Python-Version
Versuchen Sie, das Thema Pelican vorzustellen
Wie fange ich mit Scrapy an?
Erste Schritte mit Python