如何在 R 中为 H2O 数据帧随机抽样?
How to take random samples for H2O data frame in R?
我有一个包含 40 列和 100 万行的水数据 table。我想随机选择 30 万行而不进行替换。我在网上看的H2o.sample函数报错(我已经启动了h2o集群)
Error: could not find function "h2o.sample"
还有其他方法吗?提前致谢!
没有h2o.sample()
功能(也许在很旧的H2O版本中有?)。您可以使用 h2o.splitFrame()
函数将您的框架分割成多个部分。这也是一种获取数据框的随机子集(无需替换)的方法。该函数实际上会创建两个(或更多)数据,所以如果您只想要 30%,这里是 R 中使用 iris 获取 ~30% 行随机样本的示例:
library(h2o)
h2o.init()
hf <- as.h2o(iris)
ss <- h2o.splitFrame(hf, ratios = c(0.3), seed = 1)
sub_hf <- ss[[1]] # will contain 30% of the rows
请注意,出于可伸缩性原因,h2o.splitFrame()
使用 "approximate splitting",这意味着您不一定会恰好获得 30% 的行。但是,预期值为 30%,当您的数据较大时,它会更接近所需的百分比。鸢尾花是一个很小的 150 行数据集,所以方差更大。
我有一个包含 40 列和 100 万行的水数据 table。我想随机选择 30 万行而不进行替换。我在网上看的H2o.sample函数报错(我已经启动了h2o集群)
Error: could not find function "h2o.sample"
还有其他方法吗?提前致谢!
没有h2o.sample()
功能(也许在很旧的H2O版本中有?)。您可以使用 h2o.splitFrame()
函数将您的框架分割成多个部分。这也是一种获取数据框的随机子集(无需替换)的方法。该函数实际上会创建两个(或更多)数据,所以如果您只想要 30%,这里是 R 中使用 iris 获取 ~30% 行随机样本的示例:
library(h2o)
h2o.init()
hf <- as.h2o(iris)
ss <- h2o.splitFrame(hf, ratios = c(0.3), seed = 1)
sub_hf <- ss[[1]] # will contain 30% of the rows
请注意,出于可伸缩性原因,h2o.splitFrame()
使用 "approximate splitting",这意味着您不一定会恰好获得 30% 的行。但是,预期值为 30%,当您的数据较大时,它会更接近所需的百分比。鸢尾花是一个很小的 150 行数据集,所以方差更大。