我们在python中使用sklearn,并尝试使用full_tree在一系列簇号(即N=2-9)上运行聚集聚类(Wards),而不必使用缓存为N的每个单独值重新计算树。这个问题在2016年的一篇旧帖子中得到了回答,但这个答案似乎已经不起作用了。参见(sklearn agglomerative clustering: dynamically updating the number of clusters)。 换句话说,在不同的N值上运行fit,而不是每次都重新聚类。但是,我们得到了语法错误,并且无法调用存储在缓存中的任何集群的标签。代码类似于:
x = AgglomerativeClustering(memory="mycachedir", compute_full_tree=True
但是x.fit_predict(inputDF{2})
不适合内存访问命令的语法
有人知道在这种情况下从缓存中调用标签的语法吗?谢谢
另外,我是个新手,所以如果我不清楚的话,请提前道歉
2016年发布的试用解决方案(sklearn agglomerative clustering: dynamically updating the number of clusters)
代码类似于:
x = AgglomerativeClustering(memory="mycachedir", compute_full_tree=True
但是x.fit_predict(inputDF{2})
不适合内存访问命令的语法
我们希望在给定的数组输入上运行集群,并在一个范围内改变集群数量“N”时检索每个集群的标签,使用缓存,而不是每次都重新计算树
sklearnapi非常适合这种情况
最好使用scipy的凝聚聚类。因为它包括两个步骤:建立连锁/树状图,然后从中提取一个平坦的聚类。第一步是O(n)³) 和沃德在一起,但我认为第二步只是O(n)。类似的方法也可以在ELKI中找到。但不幸的是,sklearn遵循这种源自分类的狭隘的“拟合-预测”观点,并且不支持这种两步方法
如果我没弄错的话,scipy中还有其他功能,但sklearn中没有。你看看
相关问题 更多 >
编程相关推荐