K-means算法的实例代码及解译
时间: 2024-04-24 08:03:05 浏览: 30
K-means算法是一种无监督的聚类算法,它将数据集划分为K个不同的组或簇,其中每个数据点属于最接近的簇。以下是一个简单的K-means算法的Python代码和解释:
```python
from sklearn.cluster import KMeans
import numpy as np
# 生成数据集
X = np.array([[1,2],[1.5,1.8],[5,8],[8,8],[1,0.6],[9,11]])
# 创建KMeans对象,指定簇的数量为2
kmeans = KMeans(n_clusters=2)
# 训练模型并预测结果
kmeans.fit(X)
labels = kmeans.predict(X)
# 打印每个数据点所属的簇
print(labels)
```
在此代码中,我们首先导入了KMeans类和NumPy库。然后,我们创建了一个包含6个数据点的数据集X。接下来,我们创建一个KMeans对象,并将其簇的数量设置为2。我们使用fit()方法来训练模型,并使用predict()方法来预测每个数据点所属的簇。最后,我们打印了每个数据点所属的簇。
K-means算法将数据集分成两个簇,每个簇包含三个数据点。我们可以根据数据点的坐标和标签来可视化这些簇。
以下是可视化的代码:
```python
import matplotlib.pyplot as plt
# 将标签为0的数据点绘制为红色
plt.scatter(X[labels==0, 0], X[labels==0, 1], s=100, c='red')
# 将标签为1的数据点绘制为蓝色
plt.scatter(X[labels==1, 0], X[labels==1, 1], s=100, c='blue')
# 绘制簇的中心点
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='yellow')
# 显示图形
plt.show()
```
在此代码中,我们导入了Matplotlib库,并使用scatter()函数将每个数据点绘制为红色或蓝色。我们还使用scatter()函数将两个簇的中心点绘制为黄色。最后,我们调用show()方法来显示图形。
这个K-means算法的例子可以帮助您了解如何使用Python实现K-means算法,并可视化簇。
相关推荐
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)