Kluster spasial berbasis kepadatan dari suatu aplikasi tanpa kebisingan .
DBSCAN adalah algoritma pengelompokan. Berikan kumpulan nilai dan algoritme mengaturnya ke dalam kelompok nilai terdekat.
Bagi banyak dari kita, jika kita sudah familiar dengan algoritma clustering, kita pasti tahu tentang k -means clustering. Namun salah satu tantangan dengan k -means adalah Anda perlu menentukan sejumlah cluster (" k ") untuk menggunakannya. Seringkali, kita tidak mengetahui nilai k yang masuk akal secara apriori . (Faktanya, sering kali itulah yang ingin kita ketahui sejak awal!)
Hal yang menyenangkan tentang DBSCAN adalah Anda tidak perlu menentukan jumlah cluster untuk menggunakannya. Yang Anda perlukan hanyalah fungsi untuk menghitung jarak antar nilai dan beberapa panduan berapa jarak yang dianggap "dekat". DBSCAN juga memberikan hasil yang lebih masuk akal dibandingkan k -means di berbagai distribusi yang berbeda.
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 ] ]
Tambahkan paket DBSCAN ke dependensi target Anda di Package.swift
:
import PackageDescription
let package = Package (
name : " YourProject " ,
dependencies : [
. package (
url : " https://github.com/NSHipster/DBSCAN " ,
from : " 0.0.1 "
) ,
]
)
Kemudian jalankan perintah swift build
untuk membangun proyek Anda.
MIT
Matt (@mattt)