1

Ich bin auf der Suche nach einer effizienten Implementierung von LSH in Python 3, die Euclidean Abstand verwendet.LSH-Implementierung in Python 3 mit euklidischen Abstand und alle Nachbarn in LSHForest zu sehen

Es gibt die "In-Python" LSHForest Implementierung, aber es verwendet Kosinus-Entfernungen.

Auch bei Verwendung dieser Implementierung habe ich keine Möglichkeit gefunden, den Inhalt der einzelnen Körbe zu sehen, z. B. wenn LSH für Clustering verwendet wird - es gibt nur eine bestimmte Anzahl angenäherter Nachbarn innerhalb eines bestimmten Radius zurück. Aber wenn ich alle Nachbarn sehen will, sehe ich nicht, wie es gemacht werden kann (ich will keinen willkürlichen Suchradius verwenden und ich bin mir wirklich nicht sicher, was das bedeutet, wenn man einen sehr großen oder unendlichen Radius benutzt Implementierung).

Ich werde jeden Einblick zu schätzen wissen. Danke vielmals.

Antwort

1

Für Software-Empfehlungen, bitte fragen Sie hier: Software Recommendations.


Für wie das funktioniert, lesen Sie zuerst meine answer und dann davon ausgehen, dass Sie aus dem Paket fragen (ich habe es nicht verwendet wird) eine große k (k die Anzahl der Nachbarn, dass die Software-Returns sein sollte), innerhalb eines großen Radius r. Das sollte viele Nachbarn zurückgeben, setzen Sie k = N, wobei N die Anzahl der Punkte in Ihrem Dataset ist und Sie alle Nachbarn erhalten. Wenn Sie alle Nachbarn in einem bestimmten Bucket sehen möchten, müssen Sie untersuchen, wie viele Punkte ein Bucket enthalten kann, und k auf diese Zahl setzen.

+0

"dann müssen Sie untersuchen, wie viele Punkte ein Bucket enthalten kann" - was bedeutet, dass ich zum Quellcode gehen muss, da sich die Implementierung wahrscheinlich von dem Artikel unterscheidet, auf dem sie basiert? Ich sah keine andere Möglichkeit, dies mit Paketoptionen zu tun. Vielleicht kann jemand, der das Paket benutzt hat, das beantworten? Danke – user3861925

+0

@ user3861925 ja, ist die Implementierung definiert. Nun, wenn der Artikel diese Information angibt, könnten Sie darauf basieren. Danke für die Verbesserung, Sie können die Antwort auch akzeptieren, wenn Sie möchten. Gute Frage BTW! – gsamaras