我想找到DBSCAN的eps。我有一组点,需要计算从每个点到另一个点的距离。如果形状的数组是(2267436,2),那么找到近点和最小点。这是我的数据:
xy= [[ 177963.16728699 2506663.75713195]
[ 176147.50406716 2502422.34894945]
[ 178480.33178874 2507299.83467826]
...,
[ 231205.88139267 2684014.30324774]
[ 231207.81085397 2684014.52219471]
[ 231214.870296 2684054.8263628 ]]
我正在尝试这些方法,如:
dist = scipy.spatial.distance.cdist(xy, xy,'euclidean')
要么
np.sqrt((np.square(npxy[:,np.newaxis]-npxy).sum(axis=2)))
要么
dist=scipy.spatial.distance.pdist(npxy)
d_matrix = scipy.spatial.distance.squareform(dist)
我得到所有的MemoryError。有什么办法可以搞清楚吗?
通过一些非常简单的数学运算,您可以发现无法将所有OF(n²)距离存储在内存中。
如果你一次只计算一个点的距离,你会没事的。
此外,尝试使用索引将运行时间从O(n²)减少到可管理的范围。
或者您使用更现代的算法,如OPTICS。