gpt4 book ai didi

python - Sklearn 中的高维 DBSCAN

转载 作者:行者123 更新时间:2023-12-01 08:18:34 24 4
gpt4 key购买 nike

sklearn 中是否允许通过 DBSCAN 算法进行更高维的聚类?就我而言,我想对 3 维和 4 维数据进行聚类。我检查了一些源代码,发现 DBSCAN 类调用了 sklearn utils 包中的 check_array 函数,其中包含一个参数allow_nd。默认情况下它设置为 false 并且似乎没有办法通过 DBSCAN 类构造函数来设置它。有什么想法/想法或者我错过了一些简单的事情吗?谢谢!

编辑:最少的代码(我正在使用 sklearn 版本 0.20.2)。

import numpy as np
from sklearn.cluster import DBSCAN

data = np.random.rand(128, 416, 1)
db = DBSCAN()
db.fit_predict(data)

这是一个示例,但它也适用于我加载的任何真实数据。这是返回的确切错误:

ValueError: Found array with dim 3. Estimator expected <= 2.

这是上面 ndarray 的形状和 ndim。

(128, 416, 1)
3

最佳答案

DBSCAN确实对数据维度没有限制。

证明:

from sklearn.cluster import DBSCAN
import numpy as np
np.random.seed(42)
X = np.random.randn(100).reshape((10,10))
clustering = DBSCAN(eps=3, min_samples=2).fit(X)
clustering.labels_
array([ 0, 0, 0, -1, 0, -1, -1, -1, 0, 0])

您真正的问题是您正在尝试将 3D 维度图像数据提供给 2D 算法。

根据您的情况,您有几种行动方案:

  1. 将数据转换为二维(查看 thisthis)
  2. 重新提出您的问题,并正确定义问题的根源和您想要的内容。
  3. 使用 allow_nd=True 重新编译源代码试试运气

关于python - Sklearn 中的高维 DBSCAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54833983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com