Agrupación espacial de aplicaciones con ruido basada en la densidad .
DBSCAN es un algoritmo de agrupación. Dale una colección de valores y el algoritmo los organizará en grupos de valores cercanos.
Para muchos de nosotros, si estamos familiarizados con los algoritmos de agrupamiento, sabemos acerca del agrupamiento de k -medias. Pero uno de los desafíos con k -means es que es necesario especificar una cantidad de clústeres (" k ") para poder usarlo. La mayor parte del tiempo, no sabremos cuál es un valor k razonable a priori . (¡De hecho, eso es a menudo lo que queremos saber en primer lugar!)
Lo bueno de DBSCAN es que no es necesario especificar una cantidad de clústeres para usarlo. Todo lo que necesita es una función para calcular la distancia entre valores y alguna orientación sobre qué cantidad de distancia se considera "cerca". DBSCAN también produce resultados más razonables que k -medias en una variedad de distribuciones diferentes.
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 ] ]
Agregue el paquete DBSCAN a sus dependencias de destino en Package.swift
:
import PackageDescription
let package = Package (
name : " YourProject " ,
dependencies : [
. package (
url : " https://github.com/NSHipster/DBSCAN " ,
from : " 0.0.1 "
) ,
]
)
Luego ejecute el comando swift build
para construir su proyecto.
MIT
Matt (@matt)