我有一个大小为
到目前为止,我发现的kNN包(例如
更接近我的目标的是,我看到
我看到以前有关尝试使用
NxM
的矩阵,想要计算M
个点之间的欧几里得距离,生成一个大小为NxN
的矩阵。在我的问题中,N
大约为100,000。由于我打算将此矩阵用于k最近邻算法,因此我只需要保留k
个最小距离,所以生成的NxN
矩阵非常稀疏。这与例如dist()
生成的结果形成对比,后者会导致密集矩阵(并且可能对我的大小N
造成存储问题)。到目前为止,我发现的kNN包(例如
knnflex
、kknn
等)似乎都使用密集矩阵。此外,Matrix
包没有提供成对距离函数。更接近我的目标的是,我看到
spam
包有一个nearest.dist()
函数,可以只考虑小于某个阈值delta
的距离。然而,在我的情况下,特定值的delta
可能会产生太多的距离(使我必须密集地存储NxN
矩阵),或者距离太少(使我无法使用kNN)。我看到以前有关尝试使用
bigmemory/biganalytics
包执行k-means聚类的讨论,但在这种情况下似乎无法利用这些方法。
有人知道如何在R中以稀疏方式计算距离矩阵的函数/实现吗?我的备选方案是使用两个for
循环并将结果保存在Matrix
对象中。
dist
http://stat.ethz.ch/R-manual/R-patched/library/stats/html/dist.html 这个吗? - Benjamin