Scikit learn Sci kit学习聚类模型是否具有隐藏的全局状态?

Scikit learn Sci kit学习聚类模型是否具有隐藏的全局状态?,scikit-learn,cluster-analysis,Scikit Learn,Cluster Analysis,我正在尝试使用scikit learn的凝聚聚类模型对一些数据进行聚类 为了确定更好的参数,我在for循环中尝试了不同的参数。似乎只有第一个结果是均匀分布的,而其他的聚类结果太偏了,大多是一个大的聚类(~2000)和其他1或2个元素的聚类 我的代码如下所示: for n in range(8, 15): model = AgglomerativeClustering(n) result = do_cluster(model, data_to_cluster) show_c

我正在尝试使用scikit learn的
凝聚聚类
模型对一些数据进行聚类

为了确定更好的参数,我在for循环中尝试了不同的参数。似乎只有第一个结果是均匀分布的,而其他的聚类结果太偏了,大多是一个大的聚类(~2000)和其他1或2个元素的聚类

我的代码如下所示:

for n in range(8, 15):
    model = AgglomerativeClustering(n)
    result = do_cluster(model, data_to_cluster)
    show_cluster_result(result)
在我的
do_cluster
函数中,我只需做
建模。拟合预测(数据到_cluster)

我假设我必须在集群或其他事情之后重置
模型

谁能告诉我我错过了什么


在阅读了善意的回答之后,我重新检查了我的代码。我的代码有一个愚蠢的错误,它在显示结果(其中包含对源数据的引用)时将
data\u的一些值更改为\u cluster
。我深度复制了源数据,bug就消失了。我应该更仔细地检查我的代码


谢谢。

每次迭代都会实例化一个新模型,因此这些实例之间不会传递全局状态


如果您对聚类不满意,请尝试调整此聚类算法的一些输入参数(请参阅)或尝试其他聚类算法()。

分层聚类(和其他算法)通常会生成包含异常值的小聚类。这就是为什么,例如,DBSCAN有一个噪声概念。这样的数据点是存在的,它们不能很好地作为集群处理

所以我怀疑是否有一个“全球国家”导致了这一点。您可以简单地缩小范围,例如,仅尝试k=12。如果你的假设是正确的,那么使用一个k就可以了

如果您想更好地了解结果,请查看树状图。这比尝试不同的k更有用