davies_bouldin_score用于评估聚类模型

在之前写的一篇关于聚类分析的文章中,介绍了两种用于评价聚类模型好坏的标准,分别是elbow method和silhouette score。现在使用另外一种评分方式。

davies_bouldin_score, sklearn中有这个包, 但介绍不是很多。大概意思就是这个分数越低,模型越好,最小值是0。

直接用代码可视化分析一下:
首先还是生成数据:

from sklearn.datasets import make_moons
X, y = make_moons(200, noise=.05, random_state=0)
plt.scatter(X[:, 0], X[:, 1],s=50)
plt.show()

依旧是月牙图形
在这里插入图片描述
然后先解释一下这个davies_bouldins_score的参数,需要传入数据X,和对应已经训练好的labels,即每个数据点的分类,它就会返回一个分数。

这里测试了三种不同的距离方式 :

euclidean欧式距离,

manhattan曼哈顿距离,

cosine余弦距离,

同时还要比较不同的k以及不同的linkage方式,分别有

single,average,complete。

这里不是很懂的可以去看本文开始链接中的文章。

代码如下

from sklearn.cluster import AgglomerativeClustering as AC
from sklearn.metrics import davies_bouldin_score as dbs
def hierarchical(X, similarity):
    scores1=[]
    for k in range(2,10):
        labels =AC(n_clusters=k,affinity=similarity,linkage="complete").fit_predict(X)
        scores1.append(dbs(X, labels))
    plt.plot(range(2,10), scores1,c='red',label='complete')
    
    scores2=[]
    for k in range(2,10):
        labels =AC(n_clusters=k,affinity=similarity,linkage="single").fit_predict(X)
        scores2.append(dbs(X, labels))
    plt.plot(range(2,10), scores2,c='blue',label="single")
    
    scores3=[]
    for k in range(2,10):
        labels =AC(n_clusters=k,affinity=similarity,linkage="average").fit_predict(X)
        scores3.append(dbs(X, labels))
    plt.plot(range(2,10), scores3,c='green',label="average")
    plt.ylabel("davies_bouldin_score")
    plt.xlabel("$k/n clusters$")
    plt.title(similarity)
    plt.legend(loc=0)
    plt.show()   
    
hierarchical(X,"euclidean")
hierarchical(X, "cosine")
hierarchical(X,"manhattan")

图像如下:
在这里插入图片描述
在这里插入图片描述可以发现average在大部分情况下都表现得很好,因为他的值很低。虽然在cosine中single表现得好一些,但由于hierarchial clustering默认的k是2,在k/n_clusters=2的情况下,average都是最好的,所以最终还是选择average。

并且在average,k=2的情况下,模型最好。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值