【问题标题】:stratified sampling R: java.lang.OutOfMemoryError: Java heap space分层采样R:java.lang.OutOfMemoryError:Java堆空间
【发布时间】:2017-05-17 12:59:55
【问题描述】:

我想使用这个函数here is the code on github 将我的数据集分成两部分进行采样,90% 的训练数据集(例如)和 10%(其余的)是测试(例如尝试了这段代码:


library(XLConnect)
library(readxl)
library(xlsx)
library(readxl)
ybi <- read_excel("D:/ii.xls")
#View(ybi)
test= stratified(ybi, 8, .1)

 no= (test$ID_unit) # to get indices of the testdataset samples
 train = ybi [-no,] # the indices for training data 


 write.xlsx(train,"D:/mm.xlsx",sheetName = "Newdata")

实际上我的数据有 8 个属性和 65534 行。 我根据 8 eigth 属性通过上面的代码选择了 10%,这是它给我的类,没有任何问题的测试集,但不是训练数据,错误在图上(已加入)error

如何解决它!

【问题讨论】:

  • 错误出现在哪里?
  • 在最后一条指令中,一旦我想将数据写入excel文件以备将来使用q我在我发送的图中加入了错误(有什么问题你看不到它!!)这是错误消息:> write.xlsx(train,"D:/mm.xlsx",sheetName = "Newdata") .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.lang.OutOfMemoryError: Java 堆空间
  • @RomanLuštrik 这似乎很奇怪,因为代码是好的,并且测试样本它给了我没有任何问题的 excel 文件,但是对于 90% 的训练没有 excel 文件(我想也许是因为到大小!! 65534 行的 10% 将用于测试,这很正常(我可以在没有 pblm 的情况下将其导入 excel),但其余数据并非如此:训练样本。
  • 请不要使用 cmets 转储代码/输出。编辑您的问题并包含您认为有助于他人帮助您解决问题的所有必要信息。换句话说,让你的榜样reproducible。

标签: java r sampling stratifiedjs


【解决方案1】:

您的 JVM 似乎没有为堆分配足够的内存。

作为快速修复,导出系统变量_JAVA_OPTIONS

export _JAVA_OPTIONS="-Xmx8G -Xms1G -Xcheck:jni"

你也可以使用:

options(java.parameters = "-Xmx8G")

并将 -Xmx 设置为让 R 满意的值。

【讨论】:

    猜你喜欢
    • 2022-09-30
    • 2015-11-21
    • 1970-01-01
    • 2018-01-24
    • 2018-05-18
    • 1970-01-01
    • 2015-06-04
    • 2012-03-01
    • 2019-03-31
    相关资源
    最近更新 更多