使用sklearn写kmeans算法,用sse图
时间: 2024-03-30 17:36:39 浏览: 141
好的,我可以为您提供一个使用sklearn实现kmeans算法并绘制SSE图的示例代码,您可以参考以下代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 生成数据
X = np.random.rand(100, 2)
# 绘制数据分布图
plt.scatter(X[:, 0], X[:, 1], s=50)
plt.show()
# 设置聚类的数量
k = 5
# 训练KMeans模型
kmeans = KMeans(n_clusters=k)
kmeans.fit(X)
# 获取聚类结果
labels = kmeans.labels_
centers = kmeans.cluster_centers_
# 绘制聚类结果图
colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k']
for i in range(k):
members = labels == i
plt.scatter(X[members, 0], X[members, 1], s=50, c=colors[i], alpha=0.5)
plt.plot(centers[i, 0], centers[i, 1], '*', c=colors[i], markersize=20)
plt.show()
# 绘制SSE图
sse = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=0)
kmeans.fit(X)
sse.append(kmeans.inertia_)
plt.plot(range(1, 11), sse)
plt.title('Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('SSE')
plt.show()
```
在这个示例中,我们首先使用numpy生成随机数据,并绘制了数据分布图。然后,我们使用sklearn库中的KMeans类对数据进行聚类,并绘制了聚类结果图。最后,我们使用KMeans的inertia_属性计算SSE,绘制了SSE图。
希望这个示例代码可以帮助您实现您的需求。
阅读全文