orijinal nesneleri geri almak için, bu yüzden sorunumu anlatmaya çalışacağım:Kümeleme - mesafe matrisi üzerinden kümeleri, nasıl SciPy içinde kümelenme konusunda herhangi yeterince basit öğreticiler veya açıklamalarını bulmak için dikiş olamaz
Belgeleri (hiyerarşik kümelenmiş kümeleme) kümelemeye çalışıyorum ve her belge için bir vektör oluşturup simetrik bir uzaklık matrisi oluşturdum. Vector_list, her belgeyi temsil eden (gerçekten uzun) vektörler içerir. Bu vektörler listesinin sırası, giriş belgelerinin listemdeki ile aynıdır, böylece kümelenme sonuçlarını ilgili belgeyle eşleştireceğim (umarım). diyagonal çizgi başına her belge mesafe (her zaman 0)
[0 5 4]
[5 0 4]
[5 4 0]
I scipys' bağlantı() işlevi için bu mesafe matrisi besleme olduğu
distances = distance.cdist(vector_list, vector_list, 'euclidean')
Bu, bu gibi bir matris verir.
clusters = hier.linkage(distances, method='centroid', metric='euclidean')
bu ne olduğunu tam olarak emin değilim bir şey verir, ancak veri türü numpy.ndarray olarak çıkar. Dokümanlara göre, 'yassı kümelenmeler' elde etmek için bunu tekrar kümeleyerek besleyebilirim. Mesafe matrisindeki maksimum mesafenin yarısını eşik olarak kullanıyorum.
idx = hier.fcluster(clu,0.5*distances.max(), 'distance')
Bu, bir daha bana anlam ifade etmeyen bir numpy.ndarray döndürür. Bir örnek [6 3 1 7 1 8 9 4 5 2]
Benim soru: o ne ben bağlantı ve fcluster fonksiyonları aldığım ve nasıl var ve geri gidebileceği anlamına İlk olarak mesafe matrisini oluşturduğum belgem, kümelerin herhangi bir anlam ifade edip etmediğini görmek için? Bunu doğru mu yapıyorum?
1. Bu yüzden, fclusterdata kullanırsam cdist ve linkage kullanımı gereksizdir .. beslediğim giriş cdist (vector_list), her satırın belgenin tam sözcük dağarcığına karşı karşılaştırılan metnin olduğu uzun bir sözcük sayısı vektörleri listesidir. Toplamak. Fculsterdata'yı '' özellikleriim ne olursa olsun '' (n_documents, n_features) içinde besleyebileceğimi söylediğinizde, bir dict ala (document_id: vector) yani (1: [0,0,0,1,0,2,0) demek istiyor musunuz? ])? – Eiriks
2. Üçüncü ve beşinci belgenin listeye göre kümelenmiş olduğunu nasıl görüyorsunuz? [6 3 1 7 1 8 9 4 5 2]? Daha fazla yapmak istediğim, kaç tane kümenin bulunduğunu, her kümenin ne kadar büyük olduğunu, her kümede hangi metinlerin bulunduğunu ve her kümenin asaletinin ne olduğunu bilmek. T dizisinin beni oraya nasıl getirdiğini göremiyorum. T [i] 'de T i'de nerede olduğunu söylerim, sadece bir referanstır [6 3 1 7 1 8 9 4 5 2]? – Eiriks
@Eiriks: 1. evet. Özelliklere göre sayısal değerleri kastediyorum. 2.Bu listenin üçüncü ve beşinci öğeleri (1-indeksli) aynı değere sahiptir. Listedeki değerler küme numaralarıdır. –