Python 在sklearn或其他集群库中进行集群时,是否有方法强制将一组点分配给同一个类?
我想使用sklearn的一种聚类算法,但有一个限制,即某些点集必须属于同一类。例如,给定下面的一组点,我想强制所有红点属于同一类,所有蓝点属于同一类。我也希望它,使红色和蓝色的点可以属于同一类。如果这在sklearn中不可能实现,我也愿意使用其他库Python 在sklearn或其他集群库中进行集群时,是否有方法强制将一组点分配给同一个类?,python,scikit-learn,cluster-analysis,Python,Scikit Learn,Cluster Analysis,我想使用sklearn的一种聚类算法,但有一个限制,即某些点集必须属于同一类。例如,给定下面的一组点,我想强制所有红点属于同一类,所有蓝点属于同一类。我也希望它,使红色和蓝色的点可以属于同一类。如果这在sklearn中不可能实现,我也愿意使用其他库 对于任何库来说,一个可行的解决方案是为蓝色簇定义一个“超级点”,为红色簇定义另一个“超级点” 因此,只需将蓝色超点定义为每个蓝色点的平均值/中值,同样地,红色超点也是如此。然后在这两个超级点加上剩余的点上运行聚类其名称为“,”,这是一系列半监督聚类方
对于任何库来说,一个可行的解决方案是为蓝色簇定义一个“超级点”,为红色簇定义另一个“超级点” 因此,只需将蓝色超点定义为每个蓝色点的平均值/中值,同样地,红色超点也是如此。然后在这两个超级点加上剩余的点上运行聚类其名称为“,”,这是一系列半监督聚类方法,用户还可以提供以下约束:
导入numpy
从copkmeans.cop_kmeans导入cop_kmeans
输入矩阵=numpy.random.rand(100500)
必须链接=[(0,10)、(0,20)、(0,30)]
无法链接=[(1,10)、(2,10)、(3,10)]
集群,中心=cop\U kmeans(数据集=输入矩阵,k=5,ml=必须链接,cl=不能链接)
也许这是我使用的图像中的一个缺陷,但我不一定知道红点和蓝点彼此靠近。如果它们分散在整个空间,我想这可能会有奇怪的含义。“不过我喜欢这个主意。”索耶·韦登说,这是一个很好的观点。因此,最好使用中位数,或者您可以将每个坐标上的值存储到少量的存储桶中,然后使用模式。但不管怎样,任何算法都必须将所有点视为一个点,因为它们都被分配到同一个组。您是否知道一种不需要预定义数量的聚类的约束聚类算法?是的,但它们稍微复杂一些。“约束Dirichlet混合模型”(例如,在Pyro:)或“变分惩罚概率聚类”是需要研究的两种情况。如果混合组分(簇)的数量未知,则可将参数与贝叶斯推理相结合。但我不知道这两种技术有什么现成的实现。