用python写一个K-means的代码
时间: 2023-06-14 07:04:29 浏览: 113
好的,以下是一个简单的 Python K-means 的实现:
```python
import numpy as np
import matplotlib.pyplot as plt
def k_means(X, K, max_iters=20):
m, n = X.shape
centroids = X[np.random.choice(m, K, replace=False), :]
for i in range(max_iters):
C = np.argmin(np.sum((X[:, np.newaxis, :] - centroids[np.newaxis, :, :]) ** 2, axis=2), axis=1)
centroids = np.array([X[C == k, :].mean(axis=0) for k in range(K)])
return C, centroids
# 生成随机数据
np.random.seed(42)
X = np.random.randn(100, 2)
# 运行 K-means
C, centroids = k_means(X, 3)
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=C)
plt.scatter(centroids[:, 0], centroids[:, 1], s=100, marker='x', linewidths=2, color='r')
plt.show()
```
在这个例子中,我们首先生成了 2 维的随机数据,然后运行了 K-means 算法,并将结果可视化。需要注意的是,这个实现中没有考虑算法的收敛性和鲁棒性等问题,仅仅是为了演示 K-means 的基本思路。在实际应用中,需要根据具体情况对算法进行改进和优化。
阅读全文