【发布时间】:2014-03-31 15:34:33
【问题描述】:
我正在尝试使用 DBSCAN(scikit 学习实现)和位置数据进行集群。我的数据是 np 数组格式,但是要将 DBSCAN 与 Haversine 公式一起使用,我需要创建一个距离矩阵。当我尝试执行此操作时出现以下错误(“模块”不可调用错误。)从我在线阅读的内容来看,这是一个导入错误,但我很确定这不是我的情况。我已经创建了自己的半正弦距离公式,但我确信错误不在于这个。
这是我的输入数据,一个 np 数组(ResultArray)。
[[ 53.3252628 -6.2644198 ]
[ 53.3287395 -6.2646543 ]
[ 53.33321202 -6.24785807]
[ 53.3261015 -6.2598324 ]
[ 53.325291 -6.2644105 ]
[ 53.3281323 -6.2661467 ]
[ 53.3253074 -6.2644483 ]
[ 53.3388147 -6.2338417 ]
[ 53.3381102 -6.2343826 ]
[ 53.3253074 -6.2644483 ]
[ 53.3228188 -6.2625379 ]
[ 53.3253074 -6.2644483 ]]
这是出错的代码行。
distance_matrix = sp.spatial.distance.squareform(sp.spatial.distance.pdist
(ResultArray,(lambda u,v: haversine(u,v))))
这是错误信息:
File "Location.py", line 48, in <module>
distance_matrix = sp.spatial.distance.squareform(sp.spatial.distance.pdist
(ResArray,(lambda u,v: haversine(u,v))))
File "/usr/lib/python2.7/dist-packages/scipy/spatial/distance.py", line 1118, in pdist
dm[k] = dfun(X[i], X[j])
File "Location.py", line 48, in <lambda>
distance_matrix = sp.spatial.distance.squareform(sp.spatial.distance.pdist
(ResArray,(lambda u,v: haversine(u,v))))
TypeError: 'module' object is not callable
我将 scipy 导入为 sp。 (将 scipy 导入为 sp)
【问题讨论】:
-
请注意,ELKI 使用 R*-trees 对 DBSCAN 中的正弦距离进行索引加速。这不需要 O(n^2) 时间和内存。它也有OPTICS,类似于DBSCAN 2.0
标签: python scipy cluster-analysis scikit-learn dbscan