现在假设提供一个数据集,用python实现K-Means算法的数据节点的聚类可视化,给出代码
时间: 2023-12-03 21:42:29 浏览: 37
好的,以下是一个简单的 K-Means 算法的数据节点聚类可视化 Python 代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义 K-Means 算法
def kmeans(X, k, max_iter=100):
# 随机初始化质心
centroids = X[np.random.choice(len(X), k, replace=False)]
# 迭代聚类
for i in range(max_iter):
# 计算每个数据点到质心的距离
distances = np.linalg.norm(X - centroids[:, np.newaxis], axis=2)
# 分配每个数据点到最近的质心
labels = np.argmin(distances, axis=0)
# 更新质心的位置
centroids = np.array([X[labels == j].mean(axis=0) for j in range(k)])
return labels, centroids
# 生成一些测试数据
np.random.seed(0)
X = np.vstack([np.random.randn(50, 2) + [2, 2], np.random.randn(50, 2) + [-2, -2]])
# 调用 K-Means 算法进行聚类
labels, centroids = kmeans(X, 2)
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centroids[:, 0], centroids[:, 1], marker='*', s=300, c='r')
plt.show()
```
在这个代码中,我们首先定义了一个简单的 K-Means 算法,然后生成一些测试数据,并调用该算法进行聚类。最后,我们用 Matplotlib 库进行可视化。
在这个例子中,我们生成了一些二维正态分布的数据点,并将它们分成两个簇。K-Means 算法被用来识别这些簇,并将它们可视化成不同的颜色。红色的星号表示每个簇的质心。