我想找到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。 有没有解决方法来解决它?
答案 0 :(得分:1)
通过一些非常简单的数学计算,你可以发现你不能将所有O(n²)距离存储在内存中。
如果你一次只计算一个点的距离,你就可以了。
另外,尝试使用索引将运行时间从O(n²)减少到可管理的范围。
或者您使用更现代的算法,如OPTICS。