使用Sci-Kit Learn在Jupyter笔记本中运行大数据
我通常会尝试将我的问题细分为具体的组件问题,所以请耐心等待!我们正在尝试针对相当普通的人口统计模拟一些相当稀疏的健康状况。我们可以访问大量数据,数亿条记录,我们希望在随机森林分类器中获得多达2000万条记录。有人告诉我,sci-kit学习应该能够解决这个问题。我们遇到了问题。那种不会产生回溯的那种!只是死了。
我认识到这一点并不多,但我正在寻找的是关于如何扩展和调试这个扩展过程的任何建议。
所以我们希望通过Jupyter笔记本和Scikit Learn运行真正相当大的数据,主要是随机森林。
在运行Linux 14.04的8gb核心i7笔记本和运行Py 3.5的Jupyter以及通过conda env运行Python 2.7代码的笔记本上。 (fwiw我们将数据存储在Google Big Query中,我们使用Pandas Big Query连接器,这样我们就可以在本地计算机和云端运行相同的代码)
我可以获得100,000记录数据集,并使用我们在笔记本中内置的一堆诊断报告和图表构建模型,没问题。以下方案都使用相同的代码和相应版本的相应Conda环境,但使用几个不同的硬件来尝试扩展我们的流程。
当我将数据集扩展到1,000,000条记录时,我从大查询中获得了大约95%的数据加载方式,我看到了很多挂钩的cpu活动,我想是什么似乎是内存交换活动(查看它Linux进程监视器)整个机器似乎冻结从Big Query加载进度似乎停止了很长一段时间,并且浏览器指示它已经失去与内核的连接,有时浏览器消息指示失败状态,有时与Jupyter NB上的断开链接图标,令人惊讶的是,它最终正常完成。事实上输出完全呈现在笔记本中。
我试图在使用psutil时使用一些内存分析代码,有趣的是我看到没有变化,因为Dataframe经历了几个过程,包括一个相当大的“get_dummies”过程,它将分类变量扩展为单独的列(可能会扩展内存使用情况)但是在延长时间之后执行此操作时,打印出内存使用情况统计信息,但模型诊断程序从未在浏览器中呈现(如前所述)终端窗口指示Web套接字超时并且浏览器冻结。我终于终止了笔记本终端。
有趣的是我的同事可以在他的16GB Macbook上成功处理3,000,000条记录。
当我们尝试在Google Compute引擎上处理30 GB虚拟机上的4,000,000条记录时,我们会收到错误消息,指出“内存错误”。因此,即使是巨大的机器也不允许我们完成。
我意识到我们可以使用连续构建的模型和火花,但是我们希望使用sci kit learn和Random Forrest并尽可能解决内存问题?