Scikit learn scikit学习凝聚性、聚集性和连通性

Scikit learn scikit学习凝聚性、聚集性和连通性,scikit-learn,connectivity,hierarchical-clustering,Scikit Learn,Connectivity,Hierarchical Clustering,我试图使用scikit中的凝聚聚类来学习在一个地方聚集点。点由存储在_XY中的坐标(X,Y)定义 通过由定义的连通矩阵,集群仅限于几个邻居 C=kneighbors\u图(\u XY,n\u近邻=20) 我希望有些点不是同一个集群的一部分,即使它们是邻居,所以我修改了连通矩阵,将0放在这些点之间 该算法运行平稳,但在最后,一些簇包含不应该在一起的点,即一些偶,我施加了_C=0 从这些子项中,我可以看到,当两点(I,j)的簇已经形成时,问题就出现了,并且k连接(I,j),即使_C[I,k]=0 所

我试图使用scikit中的凝聚聚类来学习在一个地方聚集点。点由存储在_XY中的坐标(X,Y)定义

通过由定义的连通矩阵,集群仅限于几个邻居
C=kneighbors\u图(\u XY,n\u近邻=20)

我希望有些点不是同一个集群的一部分,即使它们是邻居,所以我修改了连通矩阵,将0放在这些点之间

该算法运行平稳,但在最后,一些簇包含不应该在一起的点,即一些偶,我施加了_C=0

从这些子项中,我可以看到,当两点(I,j)的簇已经形成时,问题就出现了,并且k连接(I,j),即使_C[I,k]=0

所以我想知道当一些集群的大小大于2时,连通性约束是如何传播的,在这种情况下没有定义


谢谢

因此,在您的案例中似乎发生的是,尽管您主动断开了不希望在一个集群中存在的点,但这些点仍然是相同连接组件的一部分,与它们相关联的数据仍然意味着它们应该从某个级别上连接到同一集群

一般来说,
聚集聚类
的工作原理如下:开始时,所有数据点都是独立的聚类。然后,在每次迭代中,两个相邻的聚类被合并,这样,如果我们在L2距离中将原始数据与聚类平均值进行比较,那么与原始数据的差异的总体增加是最小的


因此,尽管您切断了两个节点之间的直接链接,但中间节点可以将它们聚集在更高级别上。

谢谢您的回答!让我们看看我能不能把它写下来。假设C[i,j]=1,C[j,k]=1和C[i,k]=0。i和k无法链接。在第一步中,i和j是链接的。然后k可以链接到集群(i,j)。我认为,因为C[I,k]=0,k不能被加入。但是,事实上,因为C[j,k]=1,(i,j)和k之间可能存在连接。这就像定义C[(i,j),k]=max(C[i,k],C[j,k])。请不要犹豫提出问题——用几个词来解释这一机制并不简单——它们只是通过一个中介连接起来的。我认为,如果数据足够相似,就不可能禁止这些集群的形成。当然,除非完全断开组件。但在这种情况下,凝聚器有时甚至会重新连接断开的部件。