linux - 为什么在 RFECV/LogisticRegression 之后 sklearn 中的核心活动减少
问题描述
我正在使用 sklearn 的特征提取 RFECV,它有一个参数“n_jobs”来分配核心使用量。
我有一个英特尔 i5-8400 CPU @ 2.80GHz(6 核)
我正在运行 ubuntu 16.04(64 位)。最新版本的 python、sklearn 等。
我有 2 个 jupyter 笔记本同时运行。我使用 RFECV 中的 n_jobs 参数将 5 个内核分配给一个内核,将 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 个在运行,正如您从 linux 上“top”调用的前 3 行中看到的那样:
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 上实现并行性,或者完全是其他什么?有任何想法吗?
解决方案
所以我认为这只是算法中 sklearn 的实现。该算法在上一篇文章的大约一个小时内完成运行,它显然比 n_jobs=1 版本运行得更快。我再次运行它,它显示所有内核都在正常工作,所以我相信它正在“逐渐减少”,可以这么说,并完成了算法中计算量大的部分。. .
推荐阅读
- alfresco-share - Alfresco 文档下载网址不起作用
- javascript - webapi项目如何接受来自客户端的值并将其传递给.html?
- node.js - json2csv没有明智地下载正确的数据列
- java - 没有预设 Content-Type 'null' 的 [class org.springframework.mock.web.MockMultipartFile] 转换器]
- javascript - 无论上传多大尺寸的照片,如何让用户的图像不模糊?
- python - AWS Python 套接字客户端 TimeoutError:[WinError 10060] 连接尝试失败
- python - 如何在多线程烧瓶中使用 psycopg2
- python - 我如何使用熊猫“合并”具有相同值的行
- c# - 原子性:实现资源管理器
- input - 通过LabVIEW RT读取cRIO 9045中的多个模拟输入