【问题标题】:R: how to use long vectors with randomForest?R:如何在 randomForest 中使用长向量?
【发布时间】:2014-04-22 16:30:35
【问题描述】:

R 3.0.0 的新特性之一是引入了长向量。但是,.C() 和 .Fortran() 不接受长向量输入。在R-bloggers 我发现:

这是一种预防措施,因为现有代码不太可能被编写来处理长向量(并且 R 包装器通常假设 length(x) 是整数)

我使用 R-package randomForest 并且这个包显然需要 .Fortran() 因为它崩溃并留下错误消息

randomForest.default 中的错误:.Fortran 不支持长向量(参数 20)

如何克服这个问题?我在 Windows 7 64 位计算机上使用 randomForest 4.6-7(在 R 3.0.2 下构建)。

【问题讨论】:

标签: r vector random-forest


【解决方案1】:

保证您的输入数据帧将被 randomForest 接受的唯一方法是确保数据帧内的向量长度不超过 2^31 – 1(即不长)。如果您必须从包含长向量的数据框开始,那么您将拥有数据框的子集以实现向量的可接受维度。这是您可以对数据框进行子集化以使其适合 randomForest 的一种方法:

# given data frame 'df' with long vectors
maxDim <- 2^31 - 1;
df[1:maxDim, ]

但是,这样做存在一个主要问题,即您将丢弃出现在第 2^31 行或更高行中的所有观察值(即特征)。在实践中,您可能不需要这么多的观察来运行随机森林计算。解决问题的简单方法是简单地对原始数据集进行统计有效的子样本,其大小不超过 2^31 - 1。使用非长类型的 R 向量存储数据,并且应该运行 randomForest 计算没有任何问题。

【讨论】:

    猜你喜欢
    • 2014-08-03
    • 2013-12-13
    • 2018-05-06
    • 2011-12-10
    • 2013-10-18
    • 2020-09-17
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多