Regroupement spatial d' applications avec bruit basé sur la densité .
DBSCAN est un algorithme de clustering. Donnez-lui une collection de valeurs et l'algorithme les organise en groupes de valeurs proches.
Pour beaucoup d’entre nous, si nous sommes familiers avec les algorithmes de clustering, nous connaissons le clustering k -means. Mais l'un des défis avec k -means est que vous devez spécifier un certain nombre de clusters (" k ") afin de l'utiliser. La plupart du temps, nous ne saurons pas a priori ce qu’est une valeur k raisonnable. (En fait, c’est souvent ce que nous voulons savoir en premier lieu !)
Ce qui est bien avec DBSCAN, c'est que vous n'avez pas besoin de spécifier un certain nombre de clusters pour l'utiliser. Tout ce dont vous avez besoin est une fonction pour calculer la distance entre les valeurs et des indications sur la distance considérée comme « proche ». DBSCAN produit également des résultats plus raisonnables que les k -means sur une variété de distributions différentes.
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 ] ]
Ajoutez le package DBSCAN à vos dépendances cibles dans Package.swift
:
import PackageDescription
let package = Package (
name : " YourProject " ,
dependencies : [
. package (
url : " https://github.com/NSHipster/DBSCAN " ,
from : " 0.0.1 "
) ,
]
)
Exécutez ensuite la commande swift build
pour créer votre projet.
MIT
Matt (@matt)