Dichtebasierte räumliche Clusterung von Anwendungen mit Lärm .
DBSCAN ist ein Clustering-Algorithmus. Geben Sie ihm eine Sammlung von Werten und der Algorithmus organisiert sie in Gruppen benachbarter Werte.
Viele von uns wissen, wenn wir überhaupt mit Clustering-Algorithmen vertraut sind, über k -Means-Clustering Bescheid. Eine der Herausforderungen bei k -means besteht jedoch darin, dass Sie eine Anzahl von Clustern („ k “) angeben müssen, um es verwenden zu können. In den meisten Fällen wissen wir a priori nicht, was ein vernünftiger k- Wert ist. (Tatsächlich ist es oft das, was wir zuerst wissen wollen!)
Das Schöne an DBSCAN ist, dass Sie für die Verwendung keine Anzahl von Clustern angeben müssen. Sie benötigen lediglich eine Funktion zur Berechnung des Abstands zwischen Werten und eine Anleitung, welcher Abstand als „nah“ gilt. DBSCAN liefert auch über eine Vielzahl unterschiedlicher Verteilungen sinnvollere Ergebnisse als k -means.
import DBSCAN
import simd
let input : [ SIMD3 < Double > ] = [ [ 0 , 10 , 20 ] ,
[ 0 , 11 , 21 ] ,
[ 0 , 12 , 20 ] ,
[ 20 , 33 , 59 ] ,
[ 21 , 32 , 56 ] ,
[ 59 , 77 , 101 ] ,
[ 58 , 79 , 100 ] ,
[ 58 , 76 , 102 ] ,
[ 300 , 70 , 20 ] ,
[ 500 , 300 , 202 ] ,
[ 500 , 302 , 204 ] ]
let dbscan = DBSCAN ( input )
#if swift(>=5.2)
let ( clusters , outliers ) = dbscan ( epsilon : 10 ,
minimumNumberOfPoints : 1 ,
distanceFunction : simd . distance )
#else // Swift <5.2 requires explicit `callAsFunction` method name
let ( clusters , outliers ) = dbscan . callAsFunction ( epsilon : 10 ,
minimumNumberOfPoints : 1 ,
distanceFunction : simd . distance )
#endif
print ( clusters )
// [ [0, 10, 20], [0, 11, 21], [0, 12, 20] ]
// [ [20, 33, 59], [21, 32, 56] ],
// [ [58, 79, 100], [58, 76, 102], [59, 77, 101] ],
// [ [500, 300, 202], [500, 302, 204] ],
print ( outliers )
// [ [ 300, 70, 20 ] ]
Fügen Sie das DBSCAN-Paket zu Ihren Zielabhängigkeiten in Package.swift
hinzu:
import PackageDescription
let package = Package (
name : " YourProject " ,
dependencies : [
. package (
url : " https://github.com/NSHipster/DBSCAN " ,
from : " 0.0.1 "
) ,
]
)
Führen Sie dann den Befehl swift build
aus, um Ihr Projekt zu erstellen.
MIT
Mattt (@mattt)