我正在尝试跟随一篇名为“优化版K-Means算法”的论文。我已经了解了K-Means算法的工作原理,即将元组/点分组成簇并更新质心。
我正在尝试实现上述论文中提到的方法。他们提出的算法如下:
e
的值将数据分组到更宽的间隔中,以便稍后我们可以避免迭代整个数据集。那么,我们如何将其存储在那个I
(间隔)中?我们应该定义一个多维数组吗?这对我来说没有意义(可能太蠢了,无法理解这个想法)。我接下来有疑问的是第5步。在那里,
Cw
被称为该点最近的质心。但是我们如何找出它呢?首先,我们会随机分配一个点作为质心。所以,在计算e
之前,我们是否应该循环遍历这些点并找出Cw
(最近的质心)?下一个问题是关于第6步的,我想在弄清楚关于第2步的问题之后就能理解它。
最后一个问题是关于第7步的。
CjCj'
是什么意思?上一个质心位置到更新后质心位置之间的距离?
整天以来,我一直在为此进行头脑风暴。非常感谢任何线索。谢谢。
D
),而下一个最近的簇(图像中的C2)会朝着该点移动,因此它可以更靠近D
。因此,您的“安全边距”e
可以减少D+D = 2 D
。清楚吗? - Unapiedra(0.0,0.1) ; (0.1,0.2) ; (0.3,0.4) ; (0.4,0.5) ; (0.5,0.6) ; (0.6,0.7) ; (0.7,0.8) ; (0.8,0.9) ; (0.9,1.0)
。我选择了WIDTH
为0.1
。并且在0
和1
之间随机生成数据集的值。 - Vpp Mansqrt(2) = 1.4
,因此你需要在最后一个区间上升到1.4。此外,你还希望选择宽度以达到最佳性能。这取决于你的数据分布,而在论文中可能会有一些相关说明。 - Unapiedra2*D
的值。那么,我们只从基于e
(在第6步中完成)映射点的单个区间中减去,还是从每个区间标签中减去2*D
?我猜测它只会从当前点被映射到的区间标签中减去。我是对的吗?抱歉问一些简单的问题。只是想澄清我的疑虑。 - Vpp Man