Для большинства задач машинного обучения scikit-learn - ваш друг здесь.Для DBSCAN scikit-learn имеет sklearn.cluster.DBSCAN
.Из документов scikit-learn:
>>> from sklearn.cluster import DBSCAN
>>> import numpy as np
>>> X = np.array([[1, 2], [2, 2], [2, 3],
... [8, 7], [8, 8], [25, 80]])
>>> clustering = DBSCAN(eps=3, min_samples=2).fit(X)
>>> clustering.labels_
array([ 0, 0, 0, 1, 1, -1])
>>> clustering
DBSCAN(algorithm='auto', eps=3, leaf_size=30, metric='euclidean',
metric_params=None, min_samples=2, n_jobs=None, p=None)
У вас также есть другие алгоритмы кластеризации, доступные через scikit-learn.Вы можете увидеть их все здесь .