gpt4 book ai didi

python - DBSCAN 聚类甚至无法处理 40k 数据,但可以使用 python 和 sklearn 处理 10k 数据

转载 作者:行者123 更新时间:2023-12-05 07:06:10 25 4
gpt4 key购买 nike

我正在尝试对我的数据集进行聚类。我的数据集中有 70 万行。我从中拿了 40k 并尝试在 python 和 sklearn 中进行 DBSCAN 聚类。我在 32 GB 内存上运行。该算法运行了一整夜,但没有完成,然后我手动停止了程序。

但是当我尝试使用 10k 数据集时它正在运行。

DBSCAN在数据集大小的情况下有什么限制吗?

我使用了下面的代码:

clustering = DBSCAN().fit(df)
pred_y = clustering.labels_

还有以下版本:

clustering = DBSCAN(eps=9.7, min_samples=2, algorithm='ball_tree', metric='minkowski', leaf_size=90, p=2).fit(df)
pred_y = clustering.labels_

如何在我的数据集中使用 DBSCAN 聚类?

最佳答案

[更新]

我们在这里讨论的是多少列?根据我使用 DBSCAN 的经验,列数比行数对性能的影响更大。我倾向于在将数据拟合到 DBSCAN 之前使用 PCA 来降低维度——这会显着加快聚类过程。

根据您提供的附加信息,我做了一个简单的重现(警告!使用当前参数它将运行很长时间):

import numpy as np

data_1k = np.random.random((1000, 4))
data_5k = np.random.random((5000, 4))
data_10k = np.random.random((10000, 4))
data_40k = np.random.random((40000, 4))

from sklearn.cluster import DBSCAN

clustering = DBSCAN(eps=9.7, min_samples=2, algorithm='ball_tree', metric='minkowski', leaf_size=90, p=2).fit(data_40k)
np.unique(clustering.labels_)

对于 10k 的数据集,上面的代码将在几秒钟内执行,但对于 40k 的数据集,它将处理它很长时间,这是由 eps 参数的非常高的值引起的。您绝对确定它是您数据的“正确”值吗?
对于我上面提供的示例,只需降低 eps 值(例如降低到 0.08)即可将过程加速到大约 3 秒。

如果 eps=9.7 确实是您的数据所需的值,我会考虑使用一些缩放器或可能有助于缩小值范围的东西? (并降低 eps 值)

关于python - DBSCAN 聚类甚至无法处理 40k 数据,但可以使用 python 和 sklearn 处理 10k 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62590356/

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