kmeans轮廓系数 可视化界面python
时间: 2023-10-10 08:09:25 浏览: 88
以下是一个基于Python的KMeans聚类轮廓系数可视化界面的示例代码:
```python
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples, silhouette_score
import numpy as np
# 生成随机数据
X, y = make_blobs(n_samples=500,
n_features=2,
centers=4,
cluster_std=1,
center_box=(-10.0, 10.0),
shuffle=True,
random_state=1)
# 定义要尝试的聚类数量
range_n_clusters = [2, 3, 4, 5, 6]
# 创建画布
fig, ax = plt.subplots(1, len(range_n_clusters))
fig.set_size_inches(18, 7)
# 对每个聚类数量进行循环
for i, n_clusters in enumerate(range_n_clusters):
# 创建kmeans对象
kmeans = KMeans(n_clusters=n_clusters, random_state=10)
cluster_labels = kmeans.fit_predict(X)
# 计算轮廓系数
silhouette_avg = silhouette_score(X, cluster_labels)
print("对于", n_clusters, "个聚类的平均轮廓系数为:", silhouette_avg)
# 计算每个样本的轮廓系数
sample_silhouette_values = silhouette_samples(X, cluster_labels)
# 绘制轮廓图
y_lower = 10
for j in range(n_clusters):
# 聚类j的轮廓系数值
jth_cluster_silhouette_values = \
sample_silhouette_values[cluster_labels == j]
# 将轮廓系数值按降序排列
jth_cluster_silhouette_values.sort()
size_cluster_j = jth_cluster_silhouette_values.shape[0]
y_upper = y_lower + size_cluster_j
# 随机选择颜色
color = plt.cm.Spectral(float(j) / n_clusters)
# 绘制每个聚类的轮廓图
ax[i].fill_betweenx(np.arange(y_lower, y_upper),
0, jth_cluster_silhouette_values,
facecolor=color, edgecolor=color, alpha=0.7)
# 绘制轮廓系数的垂直线
ax[i].text(-0.05, y_lower + 0.5 * size_cluster_j, str(j))
# 计算下一个聚类的y下限
y_lower = y_upper + 10
ax[i].set_title(str(n_clusters) + "个聚类")
ax[i].set_xlabel("轮廓系数值")
ax[i].set_ylabel("聚类标签")
# 设置整个图形的标题
plt.suptitle("轮廓系数方法", fontsize=14, fontweight='bold')
```
在运行该代码后,将会得到一个包含多个子图的画布,每个子图代表一种聚类数量。每个子图中的轮廓图都会显示每个聚类及其对应的轮廓系数值。轮廓图可用于评估聚类质量及其结果的一致性。
阅读全文