首页 > 解决方案 > python创建N元树类的问题

问题描述

我正在研究文本语料库集群,我想做的是: - 将语料库划分为自定义数量的集群 - 然后对于每个集群,将其再次划分为更多集群,直到违反某些内部标准。

现在我已经实现了对一组文档进行聚类的方法,但我想知道是否有一些预先实现的优化数据结构用于包含 Python 中的所有层次结构,比如scipy.cluster.hierarchy用于上升层次聚类的链接矩阵?

谢谢 !

编辑:我开始实现一个针对我的问题设计的类,但我有一个问题:

class ClustNode():
    def __init__(self, indices, sons=[]):
        self.sons = sons
        self.indices = indices

    def divide(self, X):
        km = KMeans(n_clusters=2, max_iter=100, n_init=1)
        km.fit(X[self.indices, :])

        for k in range(km.n_clusters):
            subclust_ind = self.indices[km.labels_ == k]
            self.sons.append(ClustNode(subclust_ind))

我在划分步骤有一个问题:当我在函数中添加一个基于 Kmeans 划分的新儿子时(现在我手动选择集群的数量),divide创建的新儿子将在他的self.sons属性中拥有自己!例如,以下代码:

X = np.random.random(size=(100, 5))
n = len(X)    
z = ClustNode(np.arange(n))
z.divide(X)

thenz.sons将包含它的 2 个ClustNode对象,但是z.sons[0].sons等等z.sons[0].sons[0].sons……

我不明白为什么,你们能帮帮我吗?

标签: pythondata-structureshierarchical-clustering

解决方案


推荐阅读