Hey guys,
As part of a project of mine I wrote a DBSCAN implementation in clojure. The implementation differs a bit from the
original paper as the original algorithm does a lot of in-place mutation nevertheless the logic behind it is the same.
I created the algorithm with flexibility in mind so you can use customized distance and region-query functions.
I know that there already exist some implementations in Java (weka, elki) but I wanted to implement it in Clojure
to leverage its STM capabilities and simplicity specially for the region-query function and possibly in the future to implement a
parallel DBSCAN as stated in:
http://www.cs.ucsb.edu/~veronika/MAE/scalableparalleldbscan_patwary12.pdfThe algorithm has so far not been tested thoroughly so I would like to hear your opinion regarding
its implementation and possible some obvious performance bottlenecks (since I'm relatively new to Clojure).
You can find the implementation here:
https://github.com/carocad/dbscan.cljThere is currently no clojar since I have not done any extensive testing with it. As soon as I create some (generative)
testing and check that it works as expected I will upload it.
cheers,
Camilo