python - 内存高效的最近邻算法

标签 python numpy scikit-learn pytorch

我有 10,00,000 个代理,每个代理都与 (x,y) 相关联坐标。我试图找到彼此接近的代理 ( radius=1.5 )。我尝试使用 PyTorch 来实现这一点:

X = torch.DoubleTensor(1000000,2).uniform_(0,10000)
torch.cdist(X,X,p=2)
但是,这样 session 就会崩溃。我在 google colab 上运行这个。当我尝试使用 radius_neighbors_graph 构建图形时发生了同样的情况。 scikit-learn 包。如果有人建议一种内存有效的方法来实现相同的功能,那将会有很大帮助。

最佳答案

您不太可能在不仔细考虑的情况下完整地计算 1M*1M 矩阵。你可能想要一些类似 scipy.spatial.KDTree 的东西.构建树后,您可以将代理的坐标传递给 query 方法来获取它在一定半径内的邻居。要一次获取所有邻居,您可以计算类似 sparse_distance_matrix 的内容。树本身处于适当的阈值。
或者,您可以研究任意数量的高效聚类算法。

关于python - 内存高效的最近邻算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68449560/

相关文章:

python - pandas 过滤大数据框并按列表排序

python - 每个用户每个产品的 session 持续时间

python - 使用管道查询点预测分布的标准差

python - 使用 Opencv Python 检测角点

python - 是否可以重新定义元组的相等运算符?

python - 查找 Pandas 列子集中的最大值和第二个最大值之间的差异

python - 我可以通过使用循环使迭代变得更容易吗?

python - 使用 DBSCAN 聚类 word2vec 输出的故障排除技巧

python - 将 input_dim 传递给 KerasClassifier(sklearn 包装器/接口(interface))

python - 如何通过Python控制Enttec Open DMX USB?