python - 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
……
我不明白为什么,你们能帮帮我吗?
解决方案
推荐阅读
- .net-core - 不能在调用者和被调用者上使用等待?
- powershell - 从一个文件夹移动到另一个文件夹期间文件权限未更改
- javascript - 无法更改反应虚拟DOM中复选框的状态
- sql - 根据不同列 SQL 的条件对具有值的行进行分组
- html - 链接中 svg 的可访问性
- c++ - 使用 mapi.h 函数
- java - 我想删除 listView 的数据并出现这个异常 java.lang.NullPointerException
- c++ - 使用此指针与使用两个参数的内联函数的性能影响
- javascript - 如何将对象 A 转换为具有对象 A 属性的对象数组并为其分配值和标签
- javascript - 为什么我的 HTML 标签中的变量没有显示出来?