k-means聚类代码完整版
时间: 2024-09-05 10:05:06 浏览: 154
K-means是一种常用的聚类算法,用于将数据集划分为K个簇。该算法的基本思想是:随机选择K个数据点作为初始簇中心,然后重复执行以下步骤直到收敛:
1. 根据簇中心将每个数据点分配到最近的簇。
2. 重新计算每个簇的中心,通常是簇内所有点的均值。
算法结束的条件通常是簇中心不再发生变化或者达到预定的迭代次数。
以下是一个使用Python语言和scikit-learn库实现K-means算法的完整代码示例:
```python
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 示例数据
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
# 指定簇的数量
num_clusters = 2
# 创建KMeans实例
kmeans = KMeans(n_clusters=num_clusters)
# 拟合模型
kmeans.fit(X)
# 获取簇中心点
centers = kmeans.cluster_centers_
# 获取每个点的簇标签
labels = kmeans.labels_
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.5)
plt.show()
print("簇中心点坐标:\n", centers)
```
在这段代码中,首先导入了必要的库,然后定义了一组示例数据`X`。通过调用`KMeans`类并指定`num_clusters`为2,我们创建了一个K-means模型实例。调用`fit`方法对数据进行拟合,并得到每个点的簇标签和簇中心点坐标。最后,使用matplotlib库对结果进行可视化,其中不同颜色的点表示不同的簇,红色的点表示簇中心。
阅读全文