我正在尝试对包含超过 100 万个数据点的数据集进行聚类。一列包含文本,另一列包含与其对应的数值。我面临的问题是它被卡住并且永远不会完成。我尝试过处理大约 100,000 个较小的数据集,它运行得相当快,但当我开始增加数据点时,它开始变慢,对于 100 万个数据点,它永远不会完成并挂起。最初,我认为这可能是因为我有一个用于文本的 tfidf 矩阵,并且有 100 个维度,因此需要很长时间。然后我尝试根据每个数据点的单个值的数量进行聚类,但它仍然没有完成。下面是代码片段。知道我可能做错了什么吗?我见过有人处理更大的数据集并且没有任何问题。
Y=data['amount'].values
Y=Y.reshape(-1,1)
dbscan = DBSCAN(eps=0.3, min_samples= 10, algorithm='kd_tree')
dbscan.fit_predict(Y)
labels = dbscan.labels_
print(labels.size)
clusters = labels.tolist()
#printing the value and its label
for a, b in zip(labels, Y):
print(a, b)
很可能你的 epsilon 太大了。
如果大多数点都在大多数其他点的 epsilon 范围内,则运行时间将为 O(n²) 的二次方。所以开始small values!
您不能只添加/删除功能而让 epsilon 保持不变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)