肘部法则python代码
时间: 2023-10-12 14:13:36 浏览: 50
肘部法则(Elbow Method)是一种用于确定聚类数量的常用方法。在肘部法则中,我们在不同数量的簇上运行聚类算法,并绘制每个簇数量对应的WSS(Within Cluster Sum of Squares)的图表。WSS是指每个簇内所有数据点到簇中心的距离的平方和。然后,我们选择图表中出现“肘部”的位置作为最佳聚类数量,这是指WSS仍然显著下降,但进一步增加聚类数量不会显著降低WSS。下面是使用Python实现肘部法则的示例代码:
```python
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from scipy.spatial.distance import cdist
import numpy as np
# 生成数据集
X = np.random.uniform(size=(100,2))
# 存储每个簇数量对应的WSS值
wss = []
# 循环计算每个簇数量对应的WSS值
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)
wss.append(kmeans.inertia_)
# 绘制肘部法则图表
plt.plot(range(1,11), wss)
plt.title('Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('WSS')
plt.show()
```
在上面的代码中,我们使用`KMeans`算法在数据集`X`上运行聚类,并计算每个簇数量对应的WSS值。然后,我们将这些WSS值绘制成图表,以便找到“肘部”位置。在这个例子中,我们生成了一个包含100个数据点的二维随机数据集,然后在聚类数量从1到10的范围内运行KMeans算法。最后,我们绘制了聚类数量与WSS值之间的关系图表。