python 计算k-means轮廓系数并在图表显示
时间: 2023-12-25 11:02:55 浏览: 32
在Python中,可以使用 `sklearn.metrics` 模块中的 `silhouette_score` 函数来计算KMeans聚类的轮廓系数,示例如下:
```python
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import numpy as np
import matplotlib.pyplot as plt
# 生成随机数据集
np.random.seed(0)
X = np.random.randn(100, 2)
# 计算不同K值下的轮廓系数
k_values = range(2, 10)
silhouette_scores = []
for k in k_values:
kmeans = KMeans(n_clusters=k)
kmeans.fit(X)
score = silhouette_score(X, kmeans.labels_)
silhouette_scores.append(score)
# 绘制轮廓系数图表
plt.plot(k_values, silhouette_scores, 'bo-')
plt.xlabel('K')
plt.ylabel('Silhouette Score')
plt.title('Silhouette Analysis')
plt.show()
```
在上面这个示例中,我们首先生成了一个二维的随机数据集X,然后计算不同K值下的轮廓系数并保存到 `silhouette_scores` 列表中。最后,使用 `plt.plot()` 函数绘制了轮廓系数和K值之间的关系图表。图表中X轴表示K值,Y轴表示轮廓系数。可以通过观察图表来确定最优的K值,一般来说,轮廓系数越接近1,表示聚类效果越好。