请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

7-7 pca.fit(X_train) MemoryError Traceback (most recent call last)

bobo老师您好,

    我在学习7-7这节课时,按照github上自己执行pca.fit(X_train)会有MemoryError, 如下图,请问这样问题应该如果排查呢?

    执行环境:WS2016Datacenter,8G, 执行此段代码时内存使用率52%,而且我发现pca=PCA(0.9)和pca=PCA(0.90)还不一样的MemoryError。

    经过测试在新的笔记本上用Win10+Anaconda执行就正常了,难道和Anaconda有关???

//img1.sycdn.imooc.com//szimg/5b409d8b00015e1b10930769.jpg//img1.sycdn.imooc.com//szimg/5b40a2900001835510830630.jpg

正在回答

1回答

目测不是你的程序的问题,和PCA传0.9还是0.90也没有关系,就是在计算PCA过程使用的空间过大,超过了你的系统limit。估计是一个相当高维的数据?


尝试升级scikit-learn和scikit-learn所有的相关依赖到最新。新版本的scikit-learn可能包含更多优化。


尝试一下构造PCA时 copy 属性传入 False;但是要注意这样的以后PCA的具体使用方法,可以参考文档中对copy属性的解释:http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html


另外,尝试一下设置svd_solver的参数使用randomized,也可能有帮助:)


当然了,对于处理大规模数据,提升硬件配置是王道:)


加油!

0 回复 有任何疑惑可以回复我~
  • 提问者 慕设计0065995 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-07-08 09:30:16
  • 提问者 慕设计0065995 #2
    谢谢老师的解答!回复真快!
    
    我怀疑有较大概率和scikit-learn等包的版本有关,之前MemoryError的电脑i7-7700,8G,没有安装Anaconda,只安装了Python3.6和jupyter,scikit-learn等包,我用另一台8G笔记本安装最新版Anaconda就执行正常,现在我已经把我的PC卸载了Python重新安装了Anaconda,以免后续再出现未知问题,但是我准备找一个新PC不安装Anaconda,只安装Python+jupyter+scikit-learn等的最新版重新测试一下;
    
    经过查询,我尝试过pca=PCA(n_components=0.9, copy='False')但仍有MemoryError, 我也查询了scikit-learn.org上有推荐用sklearn.decomposition.TruncatedSVD, 具体细节我还没有很清楚,我还会继续研究。。。
    回复 有任何疑惑可以回复我~ 2018-07-08 09:49:39
  • liuyubobobo 回复 提问者 慕设计0065995 #3
    加油!不需要重新安装Anaconda,直接在控制台运行conda update --all就可以自动升级所有的现有Anaconda环境中的包:)
    回复 有任何疑惑可以回复我~ 2018-07-08 11:04:17
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信