AMD-DBSCAN: An Adaptive Multi-density DBSCAN for datasets of extremely variable density