一直试图在大约50,000个条目的数据集上运行RF分类器,其中包含20个左右的标签,我认为应该没问题但是在尝试适合时我会遇到以下情况......
Exception MemoryError: MemoryError() in 'sklearn.tree._tree.Tree._resize' ignored
Segmentation fault (core dumped)
数据集已通过TfidfVectorizer,然后通过TruncatedSVD,n = 100,以减少维数。 RandomForestClassifier以n_jobs = 1和n_estimators = 10运行,试图找到它将工作的最小点。该系统运行时带有4GB的RAM,RF过去曾在类似的数据集上运行,估计数量更多.Scikit-learn运行在当前版本0.14.1。
任何提示?
由于
答案 0 :(得分:1)
Segfaults总是错误。如果malloc
在RandomForest
内失败,那么它应该被捕获,我最好的猜测是这就是你发生的事情。作为评论者已经说过,您应该将此报告给RandomForest错误跟踪器。但由于内存不足,malloc
可能失败,因此降低维度,减少训练数据集大小,获取更多内存,或在具有更多内存的系统上运行。
答案 1 :(得分:0)
尝试使用' psutil'图书馆(链接:https://pypi.python.org/pypi/psutil/0.5.0)。借助该库,您可以使用以下功能监控系统的可用内存量:
psutil.phymem_usage()
这将帮助您检测系统是否没有足够的内存或是否是您的代码问题。