我是新的主题建模和文本聚类领域,我正在努力学习更多。我想使用DBSCAN来集群文本数据。关于如何在python上实现DBSCAN,比如1、2、3.,有很多文章和源代码,但它们对我来说太难理解了,也不能在python中理解。
我有一个包含userID和消息的CSV数据,他们编写的消息如下:
user.csv ( csv行数:400 (#message))
userID messages
112 The car was broken and Kevin fixed it
.
.
.
我知道应用DBSCAN的一些步骤,例如:
删除停止词
找到相似距离(我有一个做余弦相似的代码)
我在3D空间中有以下几点:
我需要分组,根据D_max和d_max的说法
D_max = max dimension of each group
d_max = max distance of points inside each group
如下所示:
上面图像中组的形状看起来像一个框,但是形状可以是任何可能是分组算法的输出的形状。
我正在使用Python并使用Blender可视化结果。我正在考虑使用并调用它的 API,但是,我不确定这是否是当前工作的合适工具。我担心可能有更好的工具,而我不知道。我很想知道是否还有其他工具/库/算法可以帮助我。
正如@CoMartel
我试图绘制DBSCAN集群的集群结果。我将数据聚集到两个集群中,当我编写代码来绘制这些数据时,它会显示“名称错误”。但我不明白有什么问题。这是我的错误代码
for i in range(0, reduced_data.shape[0]):
if dbscan.labels_[i] == 0:
c1 = plt.scatter(reduced_data[i,0],reduced_data[i,1],c='r',marker='+')
elif dbscan.labels_[i] == 1:
c2 = plt.scat
我正在尝试集群一些地理空间数据,之前我尝试过使用库。我找到了这个,决定试试。
尽管建议not使用ELKI作为Java库(这应该比UI更少维护),我还是将它合并到我的应用程序中,我可以说我对结果非常满意。它用来存储数据的结构比Weka使用的结构效率要高得多,而且它可以选择使用空间索引这一事实无疑是有利的。
然而,当我将的结果与的结果进行比较时,我感到有点困惑。我会接受不同的实现可能会产生稍微不同的结果,但是这些巨大的差异让我认为算法有问题(可能是我的代码)。在这两种算法中,簇的数目和它们的几何形状有很大的不同。
为了记录在案,我使用的是ELKI的最新版本(0.6.0),我用于模拟的参数是:
mi
我使用DBSCAN进行集群。然而,现在我想从表示它的每个集群中选择一个点,但是我意识到DBSCAN没有像kmeans那样的质心。
然而,我坚持认为DBSCAN有一些叫做core points的东西。我在想,如果有可能利用这些核心要点或任何其他备选办法,从每一组中获得一个具有代表性的观点。
我已经在下面提到了我使用的代码。
import numpy as np
from math import pi
from sklearn.cluster import DBSCAN
#points containing time value in minutes
points = [100, 200, 60