sklearn实现K-means算法。
时间: 2025-01-05 12:12:48 浏览: 5
### 如何使用 `sklearn` 实现 K-means 聚类算法
#### 导入必要的库
为了实现 K-means 聚类,首先需要导入所需的 Python 库。这通常包括 NumPy 和 scikit-learn 中的相关模块。
```python
import numpy as np
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
```
#### 创建数据集
可以利用 `make_blobs()` 函数来创建合成的数据集用于测试聚类效果[^2]。
```python
# 构建样本总数为 300 的数据集, 共有 4 类中心点
X, y = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)
plt.scatter(X[:, 0], X[:, 1])
plt.show()
```
#### 初始化并训练模型
通过调用 `KMeans` 来初始化一个 k-means 模型实例,并设置参数如簇的数量 (`n_clusters`) 等。接着可以通过 `.fit()` 方法拟合数据[^1]。
```python
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
```
#### 获取预测标签与质心坐标
完成训练之后,可以获得每个样本所属的类别以及各个簇对应的质心位置。
```python
labels = kmeans.predict(X)
centroids = kmeans.cluster_centers_
print("Cluster labels:", labels)
print("Centroid locations:\n", centroids)
```
#### 可视化结果
最后一步是对聚类的结果进行可视化展示,以便直观理解分类情况。
```python
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], marker='*', s=300, c='red', label='centroid')
plt.legend()
plt.show()
```
上述过程展示了完整的基于 `scikit-learn` 的 K-means 聚类流程,从构建数据到最终呈现聚类的效果图[^3]。
阅读全文