在聚类时,不仅要关注轮廓系数的大小,还要结合实际应用场景和数据特点进行综合判断。对于轮廓系数较低但聚类模式明显的情况,可以通过可视化等手段来进一步判断聚类效果。
下面是一个示例,使用Python的scikit-learn库进行K-Means聚类,并通过可视化来进一步评估聚类效果。
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
# 生成模拟数据
X, y = make_blobs(n_samples=1000, centers=4, random_state=42)
# 计算不同K值下的轮廓系数
silhouette_scores = []
k_values = range(2, 11)
for k in k_values:
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(X)
score = silhouette_score(X, kmeans.labels_)
silhouette_scores.append(score)
# 可视化轮廓系数
plt.plot(k_values, silhouette_scores)
plt.xlabel('Number of clusters')
plt.ylabel('Silhouette score')
plt.show()
# 对聚类结果进行可视化
kmeans = KMeans(n_clusters=4, random_state=42)
kmeans.fit(X)
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.show()
运行结果示意图:
从轮廓系数可视化图可以看出,虽然K=4时的轮廓系数最低,但整体上轮廓系数仍然比较高,因此可以综合判断K=4是较为合适的聚类结果。同时,从聚类结果可视化图中也可以看出,不同类别之间有明显的分界线,验证了聚类结果的合理性。