首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习集群:动态更新集群数量

学习集群:动态更新集群数量
EN

Stack Overflow用户
提问于 2016-04-08 01:57:30
回答 2查看 3.8K关注 0票数 3

sklearn.cluster.AgglomerativeClustering的文档提到,

当改变集群的数量并使用缓存时,计算完整的树可能是有利的。

这似乎意味着可以首先计算完整的树,然后根据需要快速更新所需集群的数量,而无需重新计算树(使用缓存)。

然而,这一改变集群数量的程序似乎没有记录在案。我想这样做,但我不知道如何进行。

更新:为了澄清,fit方法不以集群数作为输入:http://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html#sklearn.cluster.AgglomerativeClustering.fit

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-08 04:41:35

您使用参数化memory = 'mycachedir'设置一个缓存目录,然后如果设置compute_full_tree=True,当您使用不同的n_clusters值重新运行fit时,它将使用缓存树而不是每次重新计算。为了给您提供一个示例,说明如何使用sklearn的gridsearch API来完成此操作:

代码语言:javascript
复制
from sklearn.cluster import AgglomerativeClustering
from sklearn.grid_search import GridSearchCV

ac = AgglomerativeClustering(memory='mycachedir', 
                             compute_full_tree=True)
classifier = GridSearchCV(ac, 
                          {n_clusters: range(2,6)}, 
                          scoring = 'adjusted_rand_score', 
                          n_jobs=-1, verbose=2)
classifier.fit(X,y)
票数 3
EN

Stack Overflow用户

发布于 2020-08-07 15:32:28

我知道这是个老生常谈的问题,但下面的解决办法可能会很有帮助

代码语言:javascript
复制
# scores = input matrix

from scipy.cluster.hierarchy import linkage
from scipy.cluster.hierarchy import cut_tree
from sklearn.metrics import silhouette_score
from sklearn.metrics.pairwise import euclidean_distances

linkage_mat = linkage(scores, method="ward")
euc_scores = euclidean_distances(scores)

n_l = 2
n_h = scores.shape[0]

silh_score = -2
# Selecting the best number of clusters based on the silhouette score
for i in range(n_l, n_h):
    local_labels = list(cut_tree(linkage_mat, n_clusters=i).flatten())
    sc = silhouette_score(
        euc_scores,
        metric="precomputed",
        labels=local_labels,
        random_state=42)
    if silh_score < sc:
        silh_score = sc
        labels = local_labels

n_clusters = len(set(labels))
print(f"Optimal number of clusters: {n_clusters}")
print(f"Best silhouette score: {silh_score}")
# ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36490241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档