将 silhouette_score 与 DBSCAN 一起使用时,有没有办法解决此错误
Is there a way to solve this error when using silhouette_score with 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 个以上的簇标签。根据
这可能会导致此错误
如何解决这个问题?
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 不适合用于带有噪声的聚类。
它会将噪音视为一个簇,并为其分配一个非常差的剪影。
我正在尝试为 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 个以上的簇标签。根据
如何解决这个问题?
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 不适合用于带有噪声的聚类。
它会将噪音视为一个簇,并为其分配一个非常差的剪影。