Tôi đang thực hiện phân cụm theo thứ bậc ma trận 2 chiều theo chỉ số khoảng cách tương quan (tức là 1 - tương quan Pearson). Mã của tôi là như sau (các dữ liệu trong một biến gọi là "data"):vấn đề với phân cụm theo cấp bậc trong Python
from hcluster import *
Y = pdist(data, 'correlation')
cluster_type = 'average'
Z = linkage(Y, cluster_type)
dendrogram(Z)
Các lỗi tôi nhận được là:
ValueError: Linkage 'Z' contains negative distances.
gì gây ra lỗi này? Ma trận "dữ liệu" mà tôi sử dụng chỉ đơn giản là:
[[ 156.651968 2345.168618]
[ 158.089968 2032.840106]
[ 207.996413 2786.779081]
[ 151.885804 2286.70533 ]
[ 154.33665 1967.74431 ]
[ 150.060182 1931.991169]
[ 133.800787 1978.539644]
[ 112.743217 1478.903191]
[ 125.388905 1422.3247 ]]
Tôi không thấy pdist bao giờ có thể tạo ra số âm khi tham gia tương quan 1 - pearson. Bất kỳ ý tưởng về điều này?
cảm ơn bạn.
Tôi đã thử các sau đây nhưng nó đã không làm việc: # tính Y từ pdist sử dụng 'tương quan' Y = clip (Y, 0, 1) và clusterings tôi nhận được cho ma trận tôi đã giới thiệu ở trên là rất kỳ dị. Bất kỳ ý tưởng gì có thể xảy ra? Điều này chỉ xảy ra với 'tương quan' làm đối số cho pdist. – user248237dfsf
Bạn có thể thử sử dụng một cái gì đó như 'Y [abs (Y) <3e-16] = 0.0 'thay vì bạn cũng có khoảng cách rất nhỏ. Đôi khi những con số như thế thực sự có thể vứt bỏ mọi thứ. Tôi không có nhiều kinh nghiệm sử dụng mô-đun phân cụm khá thẳng thắn. Nó có thể liên quan đến việc sử dụng 'trung bình' cho kiểu cụm sao? –