我正在使用sklearn的特征提取RFECV,它有一个参数" n_jobs"分配核心使用情况。
我有一台intel i5-8400 CPU @ 2.80GHz(6核)
我正在运行ubuntu 16.04(64位)。最新版本的python,sklearn等。
我有2个jupyter笔记本同时运行。我在RFECV中使用n_jobs参数将5个核心分配给1个核心和1个核心。
这里是要求5个内核的代码,它没有按预期工作:
logreg = LogisticRegression()
rfe = RFECV(logreg, step=3, cv=10, n_jobs=5)
rfe = rfe.fit(X_lab, y_lab)
y_pred=rfe.predict(X_lab),
无论如何,当我进入睡眠状态时,通过linux' top'来查看CPU的使用情况。命令,它显示所有6个核心活跃,几乎100%使用(这是我的预期)。然而,当我醒来时,只有2个正在运行,正如你可以从前面的第3行看到的那样。打电话给linux:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10790 ted 20 0 1489568 416948 37064 R 100.0 1.7 2456:08 python3.6
781 ted 20 0 1621052 392824 36348 R 99.7 1.6 13:04.46 python3.6
937 root 20 0 481136 106528 83944 S 8.0 0.4 42:49.95 Xorg
我的CPU中有一个非常好的液体冷却系统,有足够的RAM,而且我没有超频。我是否过度使用了我的CPU,或者这可能是关于如何在sklearn上实现并行性或完全不同的东西?有任何想法吗?
答案 0 :(得分:0)
所以我认为这只是算法中那个时刻sklearn的实现。该算法在最后一篇文章的大约一个小时内完成,它显然比n_jobs = 1版本工作得更快。我正在再次运行它,它显示所有内核都应该按照它应用的方式工作,所以我相信这是“逐渐减少”所说的,并且完成了算法的重量部分。 。 。