如何读取 scipy 层级集群的内容
How to read contents of scipy hierarchy cluster
我有以下代码用于分层聚类。我的数据对象是我之前计算的相似距离数组。我认为我正在正确执行集群。我以为我可以获得集群的叶子,但是当我将其与原始输入进行比较时,我发现不匹配。
我这里有两个问题:
为什么我的集群的叶子和我的实际输入数据不匹配?
如何通过链接矩阵或集群节点从集群中提取原始数据?
import numpy as np
import pandas
import scipy.cluster.hierarchy as sch
def list_difference(list1, list2):
return [value for value in list1 if value not in list2]
if __name__ == '__main__':
# example data for this questions purpose.
data = [10, 11, 29, 288, 16]
X = np.array([[i] for i in data])
linkage_matrix = sch.average(X)
rootnode, nodelist = sch.to_tree(linkage_matrix, rd=True)
leaves = sch.leaves_list(linkage_matrix)
print(list_difference(leaves, data))
我想检索每个聚类的原始数据点。
根据您的数据
data = [10, 11, 29, 288, 16]
结果与树状图兼容
sch.dendrogram(linkage_matrix);
分析linkage_matrix
我们可以确认
print(linkage_matrix)
array([[ 0. , 1. , 1. , 2. ],
[ 4. , 5. , 5.5 , 3. ],
[ 2. , 6. , 16.66666667, 4. ],
[ 3. , 7. , 271.5 , 5. ]])
我们一行一行地
- 元素 0 和元素 1,距离为 1 的簇中有 2 个元素(此簇将称为 5)
- 元素 4 与聚类元素 5(前一个),距离 5.5 和 3 个元素(这个聚类将被称为 6)
- 具有聚类元素 6(前一个)的元素 2,距离为 16.667 和 4 个元素(此聚类将称为 7)
- 元素 3 与聚类元素 7(前一个),距离 271.5 和 5 个元素
我有以下代码用于分层聚类。我的数据对象是我之前计算的相似距离数组。我认为我正在正确执行集群。我以为我可以获得集群的叶子,但是当我将其与原始输入进行比较时,我发现不匹配。
我这里有两个问题:
为什么我的集群的叶子和我的实际输入数据不匹配?
如何通过链接矩阵或集群节点从集群中提取原始数据?
import numpy as np
import pandas
import scipy.cluster.hierarchy as sch
def list_difference(list1, list2):
return [value for value in list1 if value not in list2]
if __name__ == '__main__':
# example data for this questions purpose.
data = [10, 11, 29, 288, 16]
X = np.array([[i] for i in data])
linkage_matrix = sch.average(X)
rootnode, nodelist = sch.to_tree(linkage_matrix, rd=True)
leaves = sch.leaves_list(linkage_matrix)
print(list_difference(leaves, data))
我想检索每个聚类的原始数据点。
根据您的数据
data = [10, 11, 29, 288, 16]
结果与树状图兼容
sch.dendrogram(linkage_matrix);
分析linkage_matrix
我们可以确认
print(linkage_matrix)
array([[ 0. , 1. , 1. , 2. ],
[ 4. , 5. , 5.5 , 3. ],
[ 2. , 6. , 16.66666667, 4. ],
[ 3. , 7. , 271.5 , 5. ]])
我们一行一行地
- 元素 0 和元素 1,距离为 1 的簇中有 2 个元素(此簇将称为 5)
- 元素 4 与聚类元素 5(前一个),距离 5.5 和 3 个元素(这个聚类将被称为 6)
- 具有聚类元素 6(前一个)的元素 2,距离为 16.667 和 4 个元素(此聚类将称为 7)
- 元素 3 与聚类元素 7(前一个),距离 271.5 和 5 个元素