2、利用聚类算法k-means把数据分为2个簇,初始随机两个质心为c1(2,6,7) c2(9,9,10), 有3个样本点分别为a(1,2,3),b(6,4,10),c(5,5,5), 计算3个样本点分别属于哪个簇
时间: 2023-10-06 18:12:05 浏览: 41
首先,我们需要计算每个样本点与两个质心的距离,然后将其分配到距离最近的簇中。距离可以使用欧氏距离计算:
$d(x,y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2}$
其中 $x$ 和 $y$ 是两个向量,$n$ 是向量的维度。
初始状态下,簇1包含质心c1,簇2包含质心c2。根据欧式距离计算,可以得到:
$d(a,c1) = \sqrt{(1-2)^2 + (2-6)^2 + (3-7)^2} \approx 5.92$
$d(a,c2) = \sqrt{(1-9)^2 + (2-9)^2 + (3-10)^2} \approx 9.11$
$d(b,c1) = \sqrt{(6-2)^2 + (4-6)^2 + (10-7)^2} \approx 6.16$
$d(b,c2) = \sqrt{(6-9)^2 + (4-9)^2 + (10-10)^2} \approx 5.83$
$d(c,c1) = \sqrt{(5-2)^2 + (5-6)^2 + (5-7)^2} \approx 4.58$
$d(c,c2) = \sqrt{(5-9)^2 + (5-9)^2 + (5-10)^2} \approx 5.48$
根据距离,可以判断每个样本点属于哪个簇:
- a属于簇1
- b属于簇2
- c属于簇1
接下来,需要更新质心。对于每个簇,计算所有样本点的平均值,作为新的质心。因此,新的c1和c2分别为:
$c1 = (\frac{1+5}{2}, \frac{2+5}{2}, \frac{3+5}{2}) = (3, 3.5, 4)$
$c2 = (\frac{6}{1}, \frac{4}{1}, \frac{10}{1}) = (6, 4, 10)$
现在,我们需要重复上述步骤,直到簇不再发生变化。在这个例子中,第二轮的计算结果如下:
$d(a,c1) = \sqrt{(1-3)^2 + (2-3.5)^2 + (3-4)^2} \approx 2.74$
$d(a,c2) = \sqrt{(1-6)^2 + (2-4)^2 + (3-10)^2} \approx 9.22$
$d(b,c1) = \sqrt{(6-3)^2 + (4-3.5)^2 + (10-4)^2} \approx 6.24$
$d(b,c2) = \sqrt{(6-6)^2 + (4-4)^2 + (10-10)^2} = 0$
$d(c,c1) = \sqrt{(5-3)^2 + (5-3.5)^2 + (5-4)^2} \approx 2.12$
$d(c,c2) = \sqrt{(5-6)^2 + (5-4)^2 + (5-10)^2} \approx 6.08$
根据距离,可以判断每个样本点属于哪个簇:
- a属于簇1
- b属于簇2
- c属于簇1
由于簇没有发生变化,算法结束。最终的簇分配结果为:
- 簇1包含样本点a和c,质心为(3, 3.5, 4)
- 簇2包含样本点b,质心为(6, 4, 10)