【发布时间】:2021-02-20 22:18:42
【问题描述】:
我正在尝试手动网格搜索 eps 和 min_samples,但我不断收到错误“ValueError:标签数为 1。有效值为 2 到 n_samples - 1(含)”。我不确定什么值有问题以及为什么。
这是我的代码:
result = []
epses = [ 0.1, 0.2, 0.3, 0.4]
min_samples = [10, 20, 30]
for v in epses:
for n in min_samples:
model = DBSCAN(eps = v, min_samples = n)
y_pred_temp = model.fit_predict(X)
n_clusters = np.unique(model.labels_).size
score = metrics.silhouette_score(X, y_pred_temp,metric = 'euclidean')
result.append((v, n, score, n_clusters))
Traceback(最近一次调用最后一次):
File "<ipython-input-68-598d3e8f0626>", line 7, in <module>
score = metrics.silhouette_score(X, y_pred_temp,metric = 'euclidean')
File "C:\Users\Sofia\anaconda3\lib\site-packages\sklearn\utils\validation.py", line 73, in inner_f
return f(**kwargs)
File "C:\Users\Sofia\anaconda3\lib\site-packages\sklearn\metrics\cluster\_unsupervised.py", line 117, in silhouette_score
return np.mean(silhouette_samples(X, labels, metric=metric, **kwds))
File "C:\Users\Sofia\anaconda3\lib\site-packages\sklearn\utils\validation.py", line 73, in inner_f
return f(**kwargs)
File "C:\Users\Sofia\anaconda3\lib\site-packages\sklearn\metrics\cluster\_unsupervised.py", line 229, in silhouette_samples
check_number_of_labels(len(le.classes_), n_samples)
File "C:\Users\Sofia\anaconda3\lib\site-packages\sklearn\metrics\cluster\_unsupervised.py", line 34, in check_number_of_labels
raise ValueError("Number of labels is %d. Valid values are 2 "
ValueError: Number of labels is 1. Valid values are 2 to n_samples - 1 (inclusive)
【问题讨论】:
-
您没有与该错误消息相关的堆栈跟踪?
-
你指的是这部分吗?文件“\anaconda3\lib\site-packages\sklearn\metrics\cluster_unsupervised.py”,第 34 行,在 check_number_of_labels raise ValueError("Number of label is %d. Valid values are 2"
-
是的,但仅此而已吗?它应该有更多的行,包括告诉您程序中的哪一行产生错误的行。无论是什么信息,您都应该将这些信息放在您的问题中而不是 cmets 中。 n此外,我们不希望您发布代码图片。如果您可以将代码的文本版本放入问题中,格式为代码,那就更好了。
-
酷。那好多了。这说明了很多关于错误的信息。非常感谢您花时间正确格式化您的问题……听起来您已经有了答案!
标签: python scikit-learn