2017-08-20 81 views
3

我使用H 2 O,其中R来计算2个data.frames之间的欧几里得距离:错误欧几里德距离计算的H 2 O - [R

set.seed(121) 

#create the data 
df1<-data.frame(matrix(rnorm(1000),ncol=10)) 
df2<-data.frame(matrix(rnorm(300),ncol=10)) 
#init h2o 
h2o.init() 

#transform to h2o 
df1.h<-as.h2o(df1) 
df2.h<-as.h2o(df2) 

如果使用正常的计算,即,第一行:

distance1<-sqrt(sum((df1[1,]-df2[1,])^2)) 

,如果我使用H2O库:

distance.h2o<-h2o.distance(df1.h[1,],df2.h[1,],"l2") 

print(distance1) 
print(distance.h2o) 

距离1和distance.h2o是不一样的。有人知道为什么吗?谢谢!!

+4

'sqrt(distance.h2o)' – user20650

+0

已解决,但正确的代码是sqrt(h2o.distance)。感谢所有! – Jesus

回答

1

看起来好像h2o.distance计算平方和,不取平方根:所以取平方根得到标准结果。

distance.h2o <- h2o.distance(df1.h[1,],df2.h[1,],"l2") 
sqrt(distance.h2o)