scikit-learn随机森林过多的内存使用情况

时间:2015-02-15 19:41:08

标签: python scikit-learn random-forest

我在Windows 7 64位中运行scikit-learn(版本0.15.2)随机森林与python 3.4。我有这个非常简单的模型:

import numpy as np
from sklearn.ensemble import RandomForestClassifier

#Data=np.genfromtxt('C:/Data/Tests/Train.txt', delimiter=',')

print ("nrows = ", Data.shape[0], "ncols = ", Data.shape[1]) 
X=np.float32(Data[:,1:])
Y=np.int16(Data[:,0])
RF = RandomForestClassifier(n_estimators=1000)
RF.fit(X, Y)

X数据集包含以下格式的约30,000 x 500个元素:

139.2398242257808,310.7242684642465,...

即使没有并行处理,内存使用量最终会增加到16 GB!我想知道为什么有这么多内存使用。

我知道之前有人问过这个问题,但在0.15.2版本之前......

有什么建议吗?

感谢。

2 个答案:

答案 0 :(得分:1)

从评论中回答。

尝试通过设置较小的n_estimators参数来减少树的数量。然后,您可以尝试使用max_depth或min_samples_split控制树深度,并使用深度交易来增加估算量。

答案 1 :(得分:1)

不幸的是,内存消耗与类的数量呈线性关系。由于你有100多个样本和相当数量的样本,因此内存爆炸也就不足为奇了。解决方案包括控制树的大小(max_depthmin_samples_leaf,...),它们的数字(n_estimators)或减少问题中的类数,如果可能的话。