2016-03-27 26 views
0

所以我在的形式我的数据,如何群集使用时间序列DBSCAN蟒蛇

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

我想在Python中使用scikit-learn库来使用DBSCAN方法对这些时间序列进行聚类。当我尝试直接拟合数据时,所有对象的输出均为-1,具有不同的ε值和最小值。

什么是正确的过程?

这里是我的代码:

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) 

回答

0

小量可难经“随机搜索”选择。

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

在基于地图的应用程序中,人们可以知道什么是良好的价值,例如, “1英里半径”。但是对于你的时间系列,距离看起来如何?你甚至可能还不知道,使用哪个距离函数。

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