nasıl

2016-03-27 32 views
0

Yani şeklinde benim veriye sahip bir Zaman Dizisi DBSCAN piton kümelendiriyornasıl

X = [[T1], [T2] ..] Tn n'inci kullanıcının zaman serileri olduğu.

Bu zaman serilerini python'daki scikit-learn kütüphanesini kullanarak DBSCAN yöntemini kullanarak kümelemek istiyorum. Verileri doğrudan yerleştirmeye çalıştığımda, çıktıyı epsilon ve min-noktalarının çeşitli değerleriyle tüm nesneler için -1 olarak alırım.

Prosedürlerin doğru yolu nedir?

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) 

cevap

0

Epsilon "rastgele arama" yoluyla seçmek zor olabilir:

İşte benim kod.

Mesafe eşiği - senin zaman aralığı tipik mesafe olduğunu bilmek gerekiyor. Şu anda, epdilon açıkça çok küçüktür, çünkü her şey veri kümenizde gürültüdür. Harita tabanlı bir uygulamada, numaralı telefon numarasının iyi bir değer olduğunu, örn. "1 mil yarıçapı". Fakat zaman serileriniz için mesafeler nasıl görünür? Henüz bilmeyebilir, hangi mesafe fonksiyonunu kullanacaksınız. Orijinal DBSCAN makalesinde, yazarlar, bir k-mesafesi grafiği temelinde epsilon'u seçmek için basit bir yöntem önermişlerdir.