2010-05-25 29 views
9

Làm cách nào để chạy phân cụm theo cấp bậc trên ma trận tương quan trong scipy/numpy? Tôi có ma trận 100 hàng bởi 9 cột và tôi muốn phân cụm theo thứ bậc theo các tương quan của từng mục nhập trong 9 điều kiện. Tôi muốn sử dụng mối tương quan 1-pearson như là khoảng cách cho phân cụm. Giả sử tôi có một mảng "X" có chứa mảng ma trận 100 x 9, tôi có thể làm như thế nào?phân cụm theo cấp bậc về các tương quan trong Python scipy/numpy?

tôi đã cố gắng sử dụng hcluster, dựa trên ví dụ này:

Y=pdist(X, 'seuclidean') 
Z=linkage(Y, 'single') 
dendrogram(Z, color_threshold=0) 

Tuy nhiên, pdist không phải là những gì tôi muốn vì đó là khoảng cách Euclide. Ý tưởng nào?

cảm ơn.

Trả lời

6

Chỉ cần thay đổi số liệu để correlation để dòng đầu tiên trở thành:

Y=pdist(X, 'correlation') 

Tuy nhiên, tôi tin rằng các mã có thể được đơn giản hóa để chỉ:

Z=linkage(X, 'single', 'correlation') 
dendrogram(Z, color_threshold=0) 

vì mối liên kết sẽ chăm sóc pdist cho bạn.

+1

Có phải 'tương quan' ở đây có nghĩa là Pearson hoặc Spearman? Ngoài ra, không phải là 1 - pearson để có thể là số liệu khoảng cách hợp lệ có thể được sử dụng cho pdist? Pdist có tự động làm điều đó không? cảm ơn. – user248237dfsf

+2

Có vẻ như đó là 1 - pearson với tôi. Bạn có thể tự xem xét nó trong các gói trang web/scipy/spatial/distance.py –

+2

Khá hiếm đối với "tương quan" được đề cập một mình để có nghĩa là tương quan Spearman. Thông thường nếu đó là người Spearman sẽ nói như vậy, nếu không giả sử Pearson. – dwf

Các vấn đề liên quan