python - 在 sklearn 或其他聚类库中进行聚类时,有没有办法强制将一组点分配给同一类?
问题描述
我想使用 sklearn 的一种聚类算法,但限制是某些点集必须属于同一类。例如,给定下面的一组点,我想强制所有红点属于同一类,所有蓝点属于同一类。我也希望红色和蓝色点可以属于同一类。如果这在 sklearn 中是不可能的,我也愿意使用其他库。
解决方案
它的名称是“受约束的聚类”,它是一系列半监督聚类方法,其中用户还可以提供以下约束:
- Must Link - 两个节点必须属于同一个集群
- 无法链接- 两个节点不能属于同一个集群
COP-KMeans 算法有一个实现,它提供了这样的 API:
import numpy
from copkmeans.cop_kmeans import cop_kmeans
input_matrix = numpy.random.rand(100, 500)
must_link = [(0, 10), (0, 20), (0, 30)]
cannot_link = [(1, 10), (2, 10), (3, 10)]
clusters, centers = cop_kmeans(dataset=input_matrix, k=5, ml=must_link,cl=cannot_link)
推荐阅读
- macos - 如何在ansible playbook中更改端口
- rotation - 如何将 SCNNode 旋转多个角度?
- azure - Azure VSTS:嵌套变量以获取 keyvault 机密的值
- javascript - 添加错误值但不是正确值时显示未定义的内容
- reactjs - 将观察者从服务器转移到客户端
- spring - 无法在 Spring Batch 的执行上下文中添加 XMLStreamWriter 变量
- apache-kafka - Kafka - Broker:消息太大
- raspberry-pi - 关闭屏幕时隐藏默认监视器消息
- autodesk-forge - 使用 Workshared Cloud Model 时的 DesignAutomationHandler 调试工具异常
- jenkins-pipeline - 詹金斯管道发布汇合汇合宏