在Python中使用Matplotlib绘制每个集群的平均轮廓得分可以通过以下步骤实现:
import matplotlib.pyplot as plt
import numpy as np
from sklearn.metrics import silhouette_samples, silhouette_score
# 假设已经有了数据集X和聚类模型model
X = ...
model = ...
cluster_labels = model.labels_
silhouette_avg = silhouette_score(X, cluster_labels)
sample_silhouette_values = silhouette_samples(X, cluster_labels)
fig, ax = plt.subplots()
y_lower = 10
for i in range(n_clusters):
ith_cluster_silhouette_values = sample_silhouette_values[cluster_labels == i]
ith_cluster_silhouette_values.sort()
size_cluster_i = ith_cluster_silhouette_values.shape[0]
y_upper = y_lower + size_cluster_i
color = plt.cm.get_cmap("Spectral")(float(i) / n_clusters)
ax.fill_betweenx(np.arange(y_lower, y_upper), 0, ith_cluster_silhouette_values, facecolor=color, edgecolor=color, alpha=0.7)
ax.text(-0.05, y_lower + 0.5 * size_cluster_i, str(i))
y_lower = y_upper + 10
ax.set_xlabel("轮廓系数")
ax.set_ylabel("聚类标签")
ax.axvline(x=silhouette_avg, color="red", linestyle="--")
ax.set_yticks([])
ax.set_xticks([-1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1])
plt.show()
以上代码将绘制一个带有每个集群的平均轮廓得分的图表。每个集群用不同的颜色填充,颜色的深浅表示轮廓得分的高低。红色虚线表示整体平均轮廓得分。
这是一个基本的绘制每个集群的平均轮廓得分的方法。根据具体的应用场景和需求,可以进一步调整图表的样式和布局。
领取专属 10元无门槛券
手把手带您无忧上云