scikit-learn == 0.21.2
层次聚集聚类算法在增加数据集时响应时间呈指数增长。
我的数据集是文本的。每个文档的长度为7-10个字。
使用以下代码执行聚类。
hac_model = AgglomerativeClustering(affinity=consine,
linkage=complete,
compute_full_tree=True,
connectivity=None, memory=None,
n_clusters=None,
distance_threshold=0.7)
cluster_matrix = hac_model.fit_predict(matrix)
大小矩阵为:
由于我使用的是BOW模型(TFIDF),因此我无法控制5000、10000、15000,因为这是输入的大小或功能集的大小(即1500、2000、2418)。
我最终使用所有唯一词(在删除停用词之后)作为我的功能列表。此列表随着输入大小的增加而增长。
所以有两个问题。
标准AGNES层次聚类的复杂度为O(n³+n²d)。因此,实例的数量比功能的数量要严重得多。
尽管最坏的情况仍然保持不变,但有些方法通常以O(n²d)运行,因此它们会比这快得多。有了这些,您通常通常会先遇到内存限制...不幸的是,就我所知,这不是在sklearn中实现的,因此您必须使用其他群集工具-或自己编写算法。