基于python利用kmeans算法进行聚类分析
时间: 2023-06-13 09:02:21 浏览: 140
K-means是一种基于距离度量的聚类算法,它将数据集分成k个簇。下面是使用Python和scikit-learn库实现K-means聚类的示例代码:
首先,我们需要准备一些数据。这里我们使用sklearn.datasets中的make_blobs函数生成一个随机数据集:
```python
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
# 生成随机数据集
X, y = make_blobs(n_samples=100, centers=4, random_state=42)
plt.scatter(X[:, 0], X[:, 1])
plt.show()
```
生成的数据集如下所示:
![kmeans_data](https://cdn.jsdelivr.net/gh/kkkk10000/image-hosting/img/kmeans_data.png)
接下来,我们使用KMeans类来进行聚类。该类需要指定簇的数量(k),并且可以选择不同的初始化方法。这里我们使用默认值。
```python
from sklearn.cluster import KMeans
# 定义K-means模型
kmeans = KMeans(n_clusters=4)
# 训练模型
kmeans.fit(X)
# 预测簇标签
y_pred = kmeans.predict(X)
```
现在我们可以绘制结果了。下面的代码绘制了数据点和簇中心:
```python
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
绘制的结果如下所示:
![kmeans_result](https://cdn.jsdelivr.net/gh/kkkk10000/image-hosting/img/kmeans_result.png)
完整代码如下:
```python
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 生成随机数据集
X, y = make_blobs(n_samples=100, centers=4, random_state=42)
plt.scatter(X[:, 0], X[:, 1])
plt.show()
# 定义K-means模型
kmeans = KMeans(n_clusters=4)
# 训练模型
kmeans.fit(X)
# 预测簇标签
y_pred = kmeans.predict(X)
# 绘制结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
希望对你有所帮助!
阅读全文