我在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版本之前......
有什么建议吗?
感谢。
答案 0 :(得分:1)
从评论中回答。
尝试通过设置较小的n_estimators参数来减少树的数量。然后,您可以尝试使用max_depth或min_samples_split控制树深度,并使用深度交易来增加估算量。
答案 1 :(得分:1)
不幸的是,内存消耗与类的数量呈线性关系。由于你有100多个样本和相当数量的样本,因此内存爆炸也就不足为奇了。解决方案包括控制树的大小(max_depth
,min_samples_leaf
,...),它们的数字(n_estimators
)或减少问题中的类数,如果可能的话。