scikit-learn随机森林永远不会完成训练,冻结

时间:2018-09-08 17:21:28

标签: python multithreading scikit-learn random-forest

我正在尝试在ubuntu 14.04.-server计算机上使用scikit-learn拟合随机森林模型。我的数据的形状为(150000,270),verbose=10的输出如下所示:

  

建筑树1 of 10   [Parallel(n_jobs = 1)]:1中完成1 |已用:剩余6.1秒:0.0秒   建筑树2 of 10   [Parallel(n_jobs = 1)]:在2中完成2 |耗用时间:剩余12.2秒:0.0秒   建筑树3 of 10   [Parallel(n_jobs = 1)]:完成3中3 |耗用时间:剩余18.3秒:0.0秒   建筑树4 of 10   [Parallel(n_jobs = 1)]:完成4之4 |耗用时间:剩余24.9秒:0.0秒   建筑树5 of 10   [Parallel(n_jobs = 1)]:在5中完成5 |耗用时间:剩余32.1秒:0.0秒   建筑树6 of 10   [Parallel(n_jobs = 1)]:在6中完成6 |耗用时间:剩余38.5秒:0.0秒   建筑树7 of 10   [Parallel(n_jobs = 1)]:在7中完成了7 |耗用时间:剩余45.3秒:0.0秒   建筑树8 of 10   [Parallel(n_jobs = 1)]:在8中完成8 |耗用时间:剩余52.0秒:0.0秒   建筑树9 of 10   [Parallel(n_jobs = 1)]:在9中完成9 |耗用时间:剩余58.5秒:0.0秒   建筑树10 of 10   [Parallel(n_jobs = 1)]:在10中完成10 |经过:1.1分钟完成

在此之后,它会挂起/冻结数小时。我试图同时更改n_jobsn_estimators参数,以减少n_jobs的模型复杂度/防止线程问题。这没有帮助。

我的模型如下所示: RandomForestRegressor(random_state=1234, n_jobs=1, n_estimators=10, min_samples_split=2, min_samples_leaf=1, verbose=10)

我了解了很多有关BLAS / MKL线程问题,并尝试设置环境变量

os.environ['MKL_NUM_THREADS'] = '1'

os.environ['OMP_NUM_THREADS'] = '1'

os.environ['NUMEXPR_NUM_THREADS'] = '1'

os.environ['JOBLIB_START_METHOD'] = 'forkserver'

但是它们都没有帮助。该模型将无法完成训练。 我的脚本看起来类似于以下结构:

import packages/libraries

## load data 
## define model
## fit model
## predict on new data

有人经历过相同/不同吗?

预先感谢!

1 个答案:

答案 0 :(得分:0)

似乎是内存问题。

我建议分析程序在运行时使用多少内存。

也许可以尝试使用数据集中的10个示例运行它,然后查看它是否运行完毕。