اللمعان المكاني للتطبيقات مع الضوضاء على أساس الكثافة .
DBSCAN هي خوارزمية تجميعية. أعطها مجموعة من القيم وستقوم الخوارزمية بتنظيمها في مجموعات من القيم القريبة.
بالنسبة للكثيرين منا، إذا كنا على دراية بخوارزميات التجميع على الإطلاق، فإننا نعرف عن تجميع الخوارزميات k . لكن أحد التحديات التي تواجه k -means هو أنك تحتاج إلى تحديد عدد من المجموعات (" k ") لاستخدامها. في كثير من الأحيان، لن نعرف ما هي قيمة k المعقولة مسبقًا . (في الواقع، هذا غالبًا ما نريد معرفته في المقام الأول!)
الشيء الجميل في DBSCAN هو أنه ليس عليك تحديد عدد من المجموعات لاستخدامه. كل ما تحتاجه هو دالة لحساب المسافة بين القيم وبعض الإرشادات حول مقدار المسافة التي تعتبر "قريبة". ينتج DBSCAN أيضًا نتائج معقولة أكثر من 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 ] ]
أضف حزمة DBSCAN إلى تبعياتك المستهدفة في Package.swift
:
import PackageDescription
let package = Package (
name : " YourProject " ,
dependencies : [
. package (
url : " https://github.com/NSHipster/DBSCAN " ,
from : " 0.0.1 "
) ,
]
)
ثم قم بتشغيل أمر swift build
لبناء مشروعك.
معهد ماساتشوستس للتكنولوجيا
مات (@مات)