我正在尝试建立一个参与式系统,通过从移动客户端(更具体地说,Android客户端,每个客户端都有一个唯一的ID)收集数据进行噪声监测。每个客户端收集数据的格式如下:[latitude, longitude, noise_value, timestamp]。最重要的是,我正在努力为这些客户开发一个声誉系统,以确定他们的数据有多可靠。据我所知,DBSCAN是最适合地理位置坐标的聚类算法,因此我使用scikit-learn中实现的算法。基本上,我可以将这些数据分组成半径为1或2公里的集群。是否有可能确定属于每个集群的客户端?E:集群#1包含来自客户端的数据:#1,#2,#3)和/或它的值?
从你发布的链接中的例子可以看到。fit函数返回一个对象,该对象包含一个标签数组,代表每个样本所属的集群。
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])
如果您使用的是pandas数据框架,您可以为创建的集群创建一个列。
df['cluster'] = clustering.labels_