【问题标题】:Using scipy hierarchical clustering with objects对对象使用 scipy 层次聚类
【发布时间】:2019-04-27 20:14:12
【问题描述】:

我有一个对象列表,以及对象之间的距离度量。我可以使用 scipy 的层次聚类来聚类对象吗(fclust1 似乎只接受浮点向量)?

或者,如果这在 scipy 中是不可能的,是否有其他 python 库可以做到这一点?

例子:

 class MyObject(object):

     def __init__(self):
       self.vec1 = [random.choice(range(100)) for i in range(1000)]
       self.vec2 = [random.choice(range(100)) for i in range(1000)]

 def my_distance_metric(a1, a2):

      return some scalar function of a1.vec1, a1.vec2, a2.vec1, a2.vec2

 objects = [MyObject() for in in range(1000)]
 fclust1.cluster(objects, metric = my_distance_metric)

谢谢。

【问题讨论】:

  • 目前范围很广。您能否提供一些意见和您尝试解决此问题的方法?
  • 我在我的问题中添加了一个示例。
  • 什么是fclust1

标签: scipy hierarchical-clustering


【解决方案1】:

您可以计算对象的压缩距离矩阵并将其传递给scipy.cluster.hierarchy.linkage 以计算链接矩阵。然后将链接矩阵传递给scipy.cluster.hierarchy.fclusterscipy.cluster.hierarchy.dendrogram

例如,

from scipy.cluster.hierarchy import linkage, dendrogram

n = len(objects)
condensed_dist = [my_distance_metric(objects[j], objects[k])
                      for j in range(n)
                          for k in range(j+1, n)]

Z = linkage(condensed_dist)
dendrogram(Z)

【讨论】:

    猜你喜欢
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2021-07-02
    • 2012-02-27
    • 2013-07-11
    • 2012-04-10
    • 2018-08-17
    相关资源
    最近更新 更多