如何使用DBSCAN python聚类时间序列

时间:2016-03-27 23:51:36

标签: python cluster-analysis dbscan

所以我的数据是

X = [[T1],[T2] ..]其中Tn是第n个用户的时间序列。

我想使用DBSCAN方法使用python中的scikit-learn库来聚类这些时间序列。当我尝试直接拟合数据时,我得到所有对象的输出为-1,具有各种值的epsilon和min-points。

正确的处理方法是什么?

这是我的代码:

db = DBSCAN(eps=0.3,min_samples=10)
db.fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)

1 个答案:

答案 0 :(得分:1)

Epsilon很难选择"随机搜索"。

这是一个距离阈值 - 您需要知道时间序列的典型距离。现在,你的epdilon显然太小了,因为你的数据集中的一切都是噪音。

在基于地图的应用程序中,可以知道什么是好的值,例如"半径1英里"。但是对于你的时间序列,距离怎么样?您可能还不知道使用哪种距离函数。

在最初的DBSCAN论文中,作者提出了一种基于k距离图选择epsilon的简单方法。