我有一个不透明对象的列表。我只能计算它们之间的距离(不是真的,只是为问题设置条件):
class Thing {
public double DistanceTo(Thing other);
}
我想对这些对象进行聚类。我想控制集群的数量,并且我希望“关闭”对象位于同一个集群中:
List<Cluster> cluster(int numClusters, List<Thing> things);
任何人都可以建议(并链接到;-))一些聚类算法(越简单越好!)或可以帮助我的库?
澄清大多数聚类算法要求对象被布置在一些 N 维空间中。该空间用于查找集群的“质心”。就我而言,我不知道 N 是什么,也不知道如何从对象中提取坐标系。我只知道两个物体相距多远。我想找到一个只使用该信息的好的聚类算法。
想象一下,您正在根据对象的“气味”进行聚类。您不知道如何在 2D 平面上放置“气味”,但您确实知道两种气味是否相似。