【问题标题】:Is there a way to solve this error when using silhouette_score with DBSCAN使用带有 DBSCAN 的 silhouette_score 时有没有办法解决这个错误
【发布时间】:2021-02-11 12:57:55
【问题描述】:

我正在尝试为 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

【问题讨论】:

    标签: python dbscan silhouette


    【解决方案1】:

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

    此外,Silhouette 不适合用于具有噪声的聚类。

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

    【讨论】:

      猜你喜欢
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 2021-06-05
      • 2021-05-07
      • 2020-02-25
      • 2020-02-18
      • 1970-01-01
      相关资源
      最近更新 更多