python 初始化一个4维向量_人工智能算法——K均值聚类算法Python实现
时间: 2023-07-07 20:12:14 浏览: 119
好的,下面是 Python 实现初始化一个 4 维向量和 K 均值聚类算法:
```python
import random
# 初始化一个 4 维向量
def init_vector():
return [random.uniform(0, 1) for _ in range(4)]
# 计算两个向量之间的距离
def dist(vec1, vec2):
return sum([(v1 - v2)**2 for v1, v2 in zip(vec1, vec2)])
# K 均值聚类算法
def kmeans(data, k):
# 随机初始化 k 个聚类中心
centers = [init_vector() for _ in range(k)]
# 初始化每个样本所属的聚类中心的编号
labels = [0] * len(data)
while True:
# 分配样本到最近的聚类中心
for i, vec in enumerate(data):
min_dist = float('inf')
for j, center in enumerate(centers):
d = dist(vec, center)
if d < min_dist:
min_dist = d
labels[i] = j
# 更新聚类中心
new_centers = [[0] * 4 for _ in range(k)]
counts = [0] * k
for i, vec in enumerate(data):
c = labels[i]
for j in range(4):
new_centers[c][j] += vec[j]
counts[c] += 1
for i in range(k):
for j in range(4):
new_centers[i][j] /= counts[i]
# 判断是否收敛
if centers == new_centers:
break
centers = new_centers
return labels
```
这段代码中,`init_vector()` 函数用于初始化一个 4 维向量,`dist()` 函数用于计算两个向量之间的距离,`kmeans()` 函数实现了 K 均值聚类算法。在 `kmeans()` 函数中,首先随机初始化 k 个聚类中心,然后不断迭代,分配每个样本到最近的聚类中心,更新聚类中心,直到聚类中心不再变化为止。函数返回每个样本所属的聚类中心的编号。
阅读全文