微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将silhouette_score与DBSCAN

如何解决将silhouette_score与DBSCAN

我正在尝试为DBSCAN找到最佳的eps值。我将min_samples设置为24,因为我在x_set中传递了2 * 12个功能,但是出现以下错误

ValueError: Number of labels is 1. Valid values are 2 to n_samples - 1 (inclusive)

我知道silhouette_score需要超过1个群集标签。可能是根据similar error.

导致此错误的原因

我该如何解决这个问题?

x_set包含以下数据:

x_set = [6.67933536e+00 1.65097236e+00 1.24573705e+00 1.01693195e+00
 9.28128921e-01 7.82497904e-01 5.98319768e-01 1.13439548e-01
 9.05382510e-04 5.42710767e-04 2.87522799e-04 1.90924073e-04]
def best_eps(x_set):
    
    X = x_set

    range_eps = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]
    for i in range_eps:
        print("eps value is: "+str(i))
        db = DBSCAN(eps=i,min_samples=24,metric='euclidean').fit(X)
        core_samples_mask = np.zeros_like(db.labels_,dtype=bool)
        core_samples_mask[db.core_sample_indices_] = True
        labels = db.labels_
        print(set(labels))
        silhouette_avg = silhouette_score(X,labels)
        print("For eps value ="+str(i),labels,"The average silhouette_score is :",silhouette_avg)
    return

解决方法

选择参数以便获得多个集群。

此外,Silhouette 不明智用于带有噪声的聚类。

它将噪声视为一个集群,并为其分配一个非常差的轮廓。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。