我正在研究一种聚类算法,以对相似的实数范围进行分组。在对它们进行分组后,我必须为该群集创建一个范围,即群集质心。例如,如果一个簇包含值&lt; 1,6&gt;,则&lt; 0,7&gt;和&lt; 0,6&gt;,这意味着该集群适用于值<0,7&gt;的所有那些集群。问题是如何创建这样的结果范围。我想要获取群集中所有值的最小值和最大值,但这意味着该算法对噪声非常敏感。我应该以某种方式加权,但我不确定如何。任何提示?感谢。
答案 0 :(得分:0)
也许您可以在运行聚类算法之前将所有范围转换为其中点。这样您就可以将问题转换为一条线上的聚类点。以前,质心范围可以“增长”。并且在下一次迭代中消耗更多可能属于另一个集群的范围。
midpoints = []
for range in ranges
midpoints[range] = range.min + (range.max - range.min) / 2
end
算法完成后,您可以按照之前的建议进行操作,并获取群集中所有范围的最小值和最大值,以创建该质心的范围。