2016-03-27 25 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的簡單方法。