R:如何使用randomForest的长向量?

use*_*417 13 r vector random-forest

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

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

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

randomForest.default出错:.Fortran不支持long向量(参数20)

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

Tim*_*sen 2

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

\n\n
# given data frame 'df' with long vectors\nmaxDim <- 2^31 - 1;\ndf[1:maxDim, ]\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n