【问题标题】:ValueError: Number of labels is 1. Valid values are 2 to n_samples - 1 (inclusive)ValueError:标签数为 1。有效值为 2 到 n_samples - 1(含)
【发布时间】: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


【解决方案1】:

当所有点都在同一个簇中时,轮廓分数没有定义。要么使用不同的指标进行模型选择,要么过滤掉 n_clusters == 1 所在的模型。

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 2021-02-24
    • 2019-03-18
    • 2021-04-16
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2015-12-26
    相关资源
    最近更新 更多