一维kmeans聚类算法python
时间: 2023-08-28 17:06:10 浏览: 69
kmeans聚类算法python实现
以下是一维kmeans聚类算法的Python代码:
```python
import random
def kmeans(data, k):
centroids = random.sample(data, k) # 随机选取k个中心点
clusters = [[] for _ in range(k)] # 初始化clusters
while True:
# 将数据点分配到最近的中心点所在的簇中
for point in data:
distances = [abs(point - c) for c in centroids]
cluster_index = distances.index(min(distances))
clusters[cluster_index].append(point)
# 计算新的中心点
new_centroids = []
for i in range(k):
if clusters[i]:
new_centroids.append(sum(clusters[i]) / len(clusters[i]))
else:
new_centroids.append(centroids[i])
# 如果中心点不再改变,停止迭代
if new_centroids == centroids:
break
centroids = new_centroids
clusters = [[] for _ in range(k)]
return clusters
```
其中,`data`表示数据集,是一个一维列表;`k`表示簇的个数;输出结果为一个包含`k`个子列表的列表,每个子列表表示一个簇,包含该簇中的所有数据点。
阅读全文