我试图在非常大的距离上执行 fastclust,但遇到了问题。
我有一个非常大的 csv 文件(大约 9100 万行,因此 for 循环在 R 中花费太长时间),其中包含关键字(大约 50,000 个唯一关键字)之间的相似性,当我读入 data.frame 时,它看起来像:
> df
kwd1 kwd2 similarity
a b 1
b a 1
c a 2
a c 2
它是一个稀疏列表,我可以使用稀疏矩阵()将其转换为稀疏矩阵:
> myMatrix
a b c
a . . .
b 1 . .
c 2 . .
但是,当我尝试使用 as.dist() 将其转换为 dist 对象时,我收到 R 中的“问题太大”的错误。我已阅读此处的其他 dist 问题,但其他人建议的代码不适用于我上面的示例数据集。
谢谢你的帮助!
虽然首先使用稀疏矩阵似乎是一个好主意,但我认为这种方法存在一些问题:您缺失的距离将被编码为0
s,不作为NA
s (see 创建(和访问)具有 NA 默认条目的稀疏矩阵 https://stackoverflow.com/questions/1274171/creating-and-accessing-a-sparse-matrix-in-r)。如您所知,在聚类时,零相异性与缺失相异性具有完全不同的含义......
所以无论如何,你需要的是一个包含很多的 dist 对象NA
是为了你遗漏的差异。不幸的是,你的问题太大了,需要太多的内存:
d <- dist(x = rep(NA_integer_, 50000))
# Error: cannot allocate vector of size 9.3 Gb
这只是处理输入......即使使用具有大量内存的 64 位机器,我也不确定聚类算法本身不会阻塞或无限期地运行。
您应该考虑将问题分解为更小的部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)