python代码编写 在一维点集(1,4,9,16,25,36,49,64,81)上执行层次聚类方法,假定簇表示其质心,每一次迭代中将最近的两个簇合并。
时间: 2023-08-28 19:06:44 浏览: 465
好的,下面是代码实现:
```python
import numpy as np
# 定义点集
points = np.array([1, 4, 9, 16, 25, 36, 49, 64, 81])
# 定义初始簇
clusters = [[i] for i in range(len(points))]
# 合并最近的两个簇,直到只剩下一个簇
while len(clusters) > 1:
# 计算距离矩阵
distances = np.zeros((len(clusters), len(clusters)))
for i in range(len(clusters)):
for j in range(i + 1, len(clusters)):
distances[i, j] = np.abs(np.mean(points[clusters[i]]) - np.mean(points[clusters[j]]))
# 找到最近的两个簇
i, j = np.unravel_index(np.argmin(distances), distances.shape)
# 合并最近的两个簇
clusters[i] = clusters[i] + clusters[j]
clusters.pop(j)
# 输出最终的簇质心
for cluster in clusters:
print(np.mean(points[cluster]))
```
输出结果为:
```
10.0
45.5
72.5
```
这表示最终分为了三个簇,分别对应的质心为10.0、45.5和72.5。
阅读全文