帮我用python写一段聚类算法
时间: 2023-10-15 15:02:45 浏览: 87
基于python聚类分析、统计分析等算法的实现源码+项目说明(课程实验作业).7z
5星 · 资源好评率100%
以下是一个简单的K均值聚类算法的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
def k_means_clustering(data, k, max_iterations=100):
"""
K均值聚类算法。
:param data: 聚类数据,numpy array格式,每行代表一个数据点。
:param k: 聚类数量。
:param max_iterations: 最大迭代次数。
:return: 聚类结果,numpy array格式,每个元素表示该数据点所属的聚类。
"""
# 随机初始化聚类中心
centers = data[np.random.choice(data.shape[0], size=k, replace=False)]
# 初始化聚类结果
labels = np.zeros(data.shape[0])
# 迭代聚类
for i in range(max_iterations):
# 计算每个数据点到各个聚类中心的距离
distances = np.sqrt(np.sum((data - centers[:, np.newaxis]) ** 2, axis=2))
# 找到距离最近的聚类中心
labels = np.argmin(distances, axis=0)
# 更新聚类中心
for j in range(k):
centers[j] = np.mean(data[labels == j], axis=0)
return labels
# 生成随机数据
np.random.seed(0)
data = np.random.randn(100, 2)
# 聚类
labels = k_means_clustering(data, k=3)
# 可视化结果
plt.scatter(data[:, 0], data[:, 1], c=labels)
plt.show()
```
这个聚类算法使用的是K均值算法,它首先随机初始化K个聚类中心,然后迭代地将每个数据点分配到距离最近的聚类中心,然后更新每个聚类的中心,直到聚类结果稳定或达到最大迭代次数为止。
阅读全文