加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用sklearn GridSearchCV查找具有大数据的优化参数(1

发布时间:2020-12-20 13:33:19 所属栏目:Python 来源:网络整理
导读:我试图在 Python中使用sklearn中的GridSearchCV来查找SVM分类器的参数.训练数据的形状为(15750,65536)(15750个样本,特征维度:65536). 使用默认设置一切正常!但是,如果我想使用并行处理选项,通过定义n_jobs我面临以下问题:数据被加载到内存中(在具有48 GB
我试图在 Python中使用sklearn中的GridSearchCV来查找SVM分类器的参数.训练数据的形状为(15750,65536)(15750个样本,特征维度:65536).

使用默认设置一切正常!但是,如果我想使用并行处理选项,通过定义n_jobs我面临以下问题:数据被加载到内存中(在具有48 GB RAM的机器上,它占整个内存的大约14%),但它永远不会开始网格搜索/培训!在(h)顶部,过程状态为S(因此它基本上停止了!).它继续占用内存,但从未开始运行(CPU使用率保持为零!).

我为n_jobs尝试了不同的值,比如2,3-5(机器有8个核心).但没有运气!
根据文档,对于大数据,可以在GridSearchCV中使用pre_dispatch选项,这样就可以限制复制数据的数量并避免内存问题.所以我尝试使用n_job = 2和pre_dispatch = 1,但仍然无效!

我还应该提一下,我用相同数量的样本尝试相同的代码,比如1000个样本,而且一切都很好!然而,问题是,鉴于对于一个进程,数据只占机器内存的15%,为什么它不能在至少两个内核上运行,pre_dispatch = 2?然后它应占用大约30%的机器内存.但为什么这个过程刚刚停止?甚至没有内存错误?
如果有办法吗?

这是完成工作的代码段(主要来自sklearn文档):

sklearn版本:0.12.1和python版本:2.7.3

tuned_parameters = [{'kernel': ['rbf'],'gamma': [1e-3,1e-4],'C': [1,10,100,1000]},{'kernel': ['linear'],1000]}]




clf = GridSearchCV(SVC(C=1),tuned_parameters,n_jobs=2,verbose=3,pre_dispatch=1)
clf.fit(tr,tt,cv=3)

解决方法

您是否尝试过n_jobs = -1,它指示sklearn使用所有CPU?这个设置对我来说非常适合(尽管我的训练样本数量要少得多).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读