【发布时间】:2015-04-16 07:22:13
【问题描述】:
我在 Windows 7 64 位中使用 python 3.4 运行 scikit-learn(版本 0.15.2)随机森林。我有这个非常简单的模型:
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 版本之前...
有什么建议吗?
【问题讨论】:
-
您的估算器参数非常高,您没有控制树的深度。
-
谢谢。对于约 100 个类的多分类情况,您对树的深度范围和 n_estimator 有什么建议?
-
您是否尝试过减少估算器的数量并查看它是否会减少使用的内存?恐怕这只是一个猜测——我想知道你是否正在创建许多非常深的树。
-
是的,它正在减少内存使用量。而且由于树木的深度尚未确定,我想它会变得疯狂。我有一个包含许多特性和类的大数据集,我认为我需要使用许多树。我需要做更多的实验......
-
您还可以尝试通过增加每次拆分所需的数据点数量来控制树的深度。我认为默认是两个。增加此值可能会增加估算器的数量。
标签: python scikit-learn random-forest