1

我想用 kmeans2 算法量化一些图像。我的问题是找到(接近)最佳集群数。

有人知道如何估计集群的数量吗?我的想法是在 hsv-color-space 中创建色调的累积直方图。但我不知道如何使用这些信息来估计计数。

问候

4

1 回答 1

1

我个人使用以下方法:

伪代码

int k = 1;
double oldCompactness = std::numeric_limits<double>::max();
double compactness = kmeans(data, k);
while( compactness/oldCompactness < threshold ) {
    oldCompactness = compactness;
    k = k + 1;
    compactness = kmeans(data, k);
}

紧凑性随着集群数量的增加而降低(如果集群与数据点一样多,它应该变为零)。

我应该指出,集群的最佳数量非常依赖于应用程序。例如,在您的应用程序中,我不知道您是否更喜欢高数据缩减(低 k)或良好的视觉表示(高 k)或折衷(介于两者之间)。

你可以在这里寻找更多/更好的想法。或者在这里(第 8 周),如果您喜欢视频。

于 2012-11-20T10:40:47.200 回答