【发布时间】:2015-09-26 15:33:27
【问题描述】:
我正在尝试使用简单的文本分类器进行一些监督实验,但在使用 Sklearn 中的 K Fold 生成器时遇到了内存问题。我得到的错误是:“您的系统已用完应用程序内存”,但我的数据集只有 ~245K 行 x ~81K 列。大,当然,但不是很大。该程序永远不会终止,而是“挂起”,直到我手动关闭终端应用程序。我让它这样运行了大约 30 分钟,没有任何进展。
我还编写了print 语句,以查看代码在交叉验证 for 循环中的哪个位置卡住了。看起来训练和测试集的索引已经生成,但是代码永远不会使用这些索引来分割实际的训练和测试集的特征和标签。我在运行 10.9.5 的 Macbook Pro 上运行它。除了终端应用程序之外,我已经关闭了所有其他应用程序,但没有成功。有没有其他人遇到过这个问题,或者这可能是我的机器特有的问题?
编辑:我已经运行了 10 倍和 5 倍交叉验证,每次都遇到相同的问题。
【问题讨论】:
-
简单的问题是您运行的是 64 位版本,您的笔记本电脑有多少内存?
-
感谢您关注@EdChum。我正在运行 64 位版本并拥有 8 GB 内存。
-
另一个简单的问题——你能用 CV 在训练集上运行它吗?也就是说,是 CV 导致了问题吗?
-
嘿@AmiTavory。我认为问题在于实际上索引到训练和测试集。例如,在我的 CV for 循环中,如果我只是编写打印语句来打印出交叉验证的每个折叠的索引数组,这没有问题。但是,如果我运行相同的 for 循环,而是尝试使用
KFold对象生成的索引为训练和测试集编制索引,我的代码永远不会通过交叉验证的第一折。我希望这能回答你的问题。 -
@kylerthecreator 我的问题有一个错字:我的意思是“你能在没有简历的情况下运行它吗”。 IIUC,您的回答部分解决了这个问题,正如您所说,即使是索引也是一个问题。不过,为了获得更多信息,也许您可以检查是否可以在没有 CV 的情况下在整个数据集上运行文本分类器。
标签: python memory scikit-learn cross-validation