采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
bobo老师您好,
我在学习7-7这节课时,按照github上自己执行pca.fit(X_train)会有MemoryError, 如下图,请问这样问题应该如果排查呢?
执行环境:WS2016Datacenter,8G, 执行此段代码时内存使用率52%,而且我发现pca=PCA(0.9)和pca=PCA(0.90)还不一样的MemoryError。
经过测试在新的笔记本上用Win10+Anaconda执行就正常了,难道和Anaconda有关???
目测不是你的程序的问题,和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,也可能有帮助:)
当然了,对于处理大规模数据,提升硬件配置是王道:)
加油!
非常感谢!
谢谢老师的解答!回复真快! 我怀疑有较大概率和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, 具体细节我还没有很清楚,我还会继续研究。。。
加油!不需要重新安装Anaconda,直接在控制台运行conda update --all就可以自动升级所有的现有Anaconda环境中的包:)
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.4k 19
3.4k 17
2.9k 15
1.6k 15
1.4k 14