
target # 这里我们也可以再拿出原始标签相互对比

当然啦,先人们也是一早就想着:得找个办法来衡量一下聚类效果啊。
于是乎,轮廓系数就诞生了。
且看下方代码。
'''这里插入一下轮廓系数的一些知识点吧
1.对于第i个对象,计算它到所属簇中所有其他对象的平均距离,记ai(体现凝聚度)
2.对于第i个对象和不包含该对象的任意簇,计算该对象到给定簇中所有对象的平均距离,取最小,记bi(体现分离度)
3.第i个对象的轮廓系数为si=(bi-ai)/max(ai, bi)
所以,很明显:轮廓系数取值为[-1,1],且越大越好;若值为负,即ai>bi,说明样本被分配到错误的簇中,不可接受;若值接近0,ai≈bi,表明聚类结果有重叠的情况。
'''
from sklearn.metrics import silhouette_score # 轮廓系数
import
matplotlib.pyplot as plt
silhouettteScore = []
for i in range(2,15):
kmeans = KMeans(n_clusters = i,random_state=123).fit(X) ##构建并训练模型
score = silhouette_score(X,kmeans.labels_) # X是零一化之后的数据
silhouettteScore.append(score)
plt.figure(figsize=(10,6))
plt.plot(range(2,15),silhouettteScore,linewidth=1.5, linestyle="-")
plt.show()
