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

前端之家收集整理的这篇文章主要介绍了R:如何用randomForest使用长向量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
R 3.0.0的新功能之一是引入长向量.但是,.C()和.Fortran()不接受长向量输入.在 R-bloggers我发现:

This is a precaution as it is very unlikely that existing code will have been written to handle long vectors (and the R wrappers often assume that length(x) is an integer)

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

Error in randomForest.default: long vectors (argument 20) are not supported in .Fortran

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

解决方法

保证输入数据帧将被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计算应运行没有任何问题.

猜你在找的Java相关文章