python处理大训练集过程中经常会遇到的Memory Error问题
这里看了几位博主的解决方案进行了整理,感谢分享!
http://chenqx.github.io/2014/10/29/Python-fastest-way-to-read-a-large-file/
https://blog.csdn.net/weixin_39750084/article/details/81501395
https://blog.csdn.net/yimingsilence/article/details/79717768
python处理大数据集时容易出现内存错误也就是内存不够用。
1、退而求其之,放弃过高精度
python原始的数据类型占用空间比较大,且没有太多的选择,默认一般好像是24字节,但是实际有时候不需要这么大或这么高精度,这时候可以使用numpy中的float32, float16等,总之根据自己的需要选够用就行,这就是好几倍的内存节省。
2、更新python库为64位,更新Pandas和Numpy库为64位
python 32bit 最大只能使用 2G 内存,坑爹之处,超过 2G 报错MemoryError。
如果你的Python用的是32位的,那么你的pandas和Numpy也只能是32位的,那么当你的内存使用超过2G时,就会自动终止内存。而 64bit python则无此限制,所以建议使用 64bit python。
解决方法就是:先检查一下你的python是多少位的,在shell中输入python,查看位数,如果是32位,那么就重装Python,装一个64位的,但同时你的库也需要重新装了。
如果你的python本来安装的就是64位的,莫急,接着往下读。
3、扩充虚拟内存
我在运行代码的过程中发现,出现memory error错误的时候,其实我的内存只用到了40+%,所以其实不太可能会出现这个错误啊,所以我查了下,发现有说是内存被限制了,考虑关掉一些可能限制内存的软件啦,扩大虚拟内存啦,这些的。
扩大虚拟内存的方法(我的系统是win8,不过应该都大同小异):
1、打开 控制面板;
2、找到 系统 这一项;
3、找到 高级系统设置 这一项;
4、点击 性能 模块的 设置 按钮;
5、选择 高级面板,在 虚拟内存 模块点击更改;
6、记得 不要 选中“自动管理所有驱动器的分页文件大小”,然后选择一个驱动器,也就是一个盘,选中自定义大小,手动输入初始大小和最大值,当然,最好不要太大,更改之后能在查看盘的使用情况,不要丢掉太多空间。
7、都设置好之后,记得点击 “设置”, 然后再确定,否则无效,最后 重启电脑 就可以了。
我在出现Memory Error情况是就用这一步解决问题的!
4、运用两种比较快Large File Reading 的方法
最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法。
4.1 Preliminary(准备)
我们谈到“文本处理”时,我们通常是指处理的内容。Python 将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法:.read()
、.readline()
和 .