Diese Frage begann als " Clustering von Geodaten in R " und wurde nun in die DBSCAN-Frage verschoben.
Als die Antworten auf die erste Frage nahelegten, suchte ich nach Informationen über DBSCAN und las einige Dokumente darüber. Neue Fragen sind aufgetaucht.
DBSCAN erfordert einige Parameter, einer davon ist "Entfernung". Welche "Entfernung" sollte ich verwenden, da meine Daten dreidimensional sind, Längengrad, Breite und Temperatur? Welche Dimension hängt mit dieser Entfernung zusammen? Ich nehme an, es sollte Temperatur sein. Wie finde ich einen solchen Mindestabstand mit R?
Ein weiterer Parameter ist die Mindestanzahl von Punkten, die zur Bildung eines Clusters erforderlich sind. Gibt es eine Methode, um diese Nummer zu finden? Leider habe ich nicht gefunden.
Durch Google suchen Ich konnte kein R-Beispiel für die Verwendung von dbscan in einem ähnlichen Datensatz wie meinem finden. Kennen Sie eine Website mit solchen Beispielen? So kann ich lesen und versuchen, mich an meinen Fall anzupassen.
Die letzte Frage ist, dass mein erster R-Versuch mit DBSCAN (ohne eine richtige Antwort auf die vorherigen Fragen) zu einem Speicherproblem führte. R sagt, dass es keinen Vektor zuordnen kann. Ich beginne mit einem 4 km beabstandeten Raster mit 779191 Punkten, das in ungefähr 300000 Zeilen x 3 Spalten (Breite, Länge und Temperatur) endet, wenn nicht gültige SST-Punkte entfernt werden. Hinweise zur Behebung dieses Speicherproblems. Kommt es auf meinen Computer oder in DBSCAN selbst an?
Vielen Dank für die Geduld, eine lange und wahrscheinlich langweilige Nachricht zu lesen, und für Ihre Hilfe.
quelle
Antworten:
Ich bin immer noch mit diesem Problem fest. Ich habe einige Vorschläge von der R-Mailingliste erhalten (danke an Christian Hennig), die ich hier anhänge:
Ich habe einige Versuche mit meinen Daten gemacht, aber ohne Erfolg:
"Ja, ich habe dbscan von fpc ausprobiert, aber ich bin immer noch mit dem Speicherproblem beschäftigt. In Bezug auf Ihre Antwort bin ich mir nicht sicher, welchen Speicherparameter ich mir ansehen soll. Im Folgenden ist der Code aufgeführt, den ich mit dbscan-Parametern ausprobiert habe. Vielleicht können Sie das Überprüfen Sie, ob ein Fehler vorliegt.
In diesem Beispiel
dbscan()
beziehe ich mich nur auf Temperaturwerte, nicht auf lon / lat, daher ist dereps
Parameter 0,1. Da es sich um einen gerasterten Datensatz handelt, ist jeder Punkt von acht Datenpunkten umgeben. Daher dachte ich, dass mindestens 5 der umgebenden Punkte innerhalb der Erreichbarkeitsentfernung liegen sollten. Aber ich bin mir nicht sicher, ob ich den richtigen Ansatz finde, wenn ich nur den Temperaturwert berücksichtige. Vielleicht fehlen mir dann räumliche Informationen. Wie soll ich mit Längen- und Breitengraddaten umgehen?Abmessungen von
sst2
sind: 152243 Zeilen x 3 Spalten "Ich teile diese E-Mail-Nachrichten hier, falls einer von Ihnen etwas Licht auf R und DBSCAN werfen kann. Danke noch einmal
quelle
Das Problem hierbei ist , mit R . Damit DBSCAN effektiv ist, benötigen Sie eine geeignete Indexstruktur (die Ihrer Entfernung entsprechen muss). R indiziert jedoch nicht wirklich. Darüber hinaus ist das fpc-Paket eine minimalistische Implementierung von DBSCAN und bietet nur einen kleinen Teil seiner Funktionalität.
In "Generalized DBSCAN" finden Sie die allgemeinen Prinzipien, die DBSCAN benötigt: einen Begriff von "Nachbarschaft" und einen Begriff von "Kernpunkten" (oder "Dichte").
quelle