用H2O存储距离的最佳方法是什么?

时间:2017-08-22 09:55:58

标签: r optimization parallel-processing h2o

Supose我有2个data.frames,我想计算它们所有行之间的欧氏距离。我的代码是:

null

我确信有更有效的方法将其存储到矩阵中。

1 个答案:

答案 0 :(得分:2)

您不需要计算循环内的距离,H2O的距离函数可以有效地计算所有行的距离。对于具有n x km x k维度的两个数据框,您可以通过以下方式找到n x m距离矩阵:

distance_matrix <- h2o.distance(df1, df2, 'l2')

没有必要采用平方根,因为h2o.distance() function允许您指定要使用的距离度量:"l1" - 绝对距离(L1范数),"l2" - 欧几里德距离(L2范数),"cosine" - 余弦相似度和"cosine_sq" - 平方余弦相似度。

按照您的示例,计算欧几里德距离矩阵的代码为:

library(h2o)
h2o.init()
df1 <- as.h2o(matrix(rnorm(7500 * 40), ncol = 40))
df2 <- as.h2o(matrix(rnorm(1250 * 40), ncol = 40))
distance_matrix <- h2o.distance(df1, df2, 'l2')

生成尺寸为7500 rows x 1250 columns的矩阵。