python – 使用sklearn GridSearchCV查找具有大数据的优化参数(15750个样本)

python – 使用sklearn GridSearchCV查找具有大数据的优化参数(15750个样本),第1张

概述我试图在 Python中使用sklearn中的GridSearchCV来查找SVM分类器的参数.训练数据的形状为(15750,65536)(15750个样本,特征维度:65536). 使用默认设置一切正常!但是,如果我想使用并行处理选项,通过定义n_jobs我面临以下问题:数据被加载到内存中(在具有48 GB RAM的机器上,它占整个内存的大约14%),但它永远不会开始网格搜索/培训!在(h)顶部 我试图在 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?这个设置对我来说非常适合(尽管我的训练样本数量要少得多). 总结

以上是内存溢出为你收集整理的python – 使用sklearn GridSearchCV查找具有大数据的优化参数(15750个样本)全部内容,希望文章能够帮你解决python – 使用sklearn GridSearchCV查找具有大数据的优化参数(15750个样本)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196815.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存