内核已死并在运行单元以训练回归模型时自动重新启动

Posted

技术标签:

【中文标题】内核已死并在运行单元以训练回归模型时自动重新启动【英文标题】:Kernel is dead and restarting automatically while running a cell for a training a regression model 【发布时间】:2020-10-27 07:48:10 【问题描述】:

我正在使用 RandomForestRegressor 进行推土机价格计算问题。在删除所有缺失值并将所有数据转换为数字后,我尝试将数据拟合并训练到模型中。数据集相当大,大约 412698 行 × 57 列,使用 3gb Ram 设备。

这是我的代码

%%time
# Instantiate model
model = RandomForestRegressor(n_jobs=-1,
                             random_state=42)

# Fit the model 
model.fit(df_tmp.drop("SalePrice", axis=1), df_tmp["SalePrice"])

该数据集在 Kaggle 中可用,我还附上了它的链接.. https://www.kaggle.com/c/bluebook-for-bulldozers/data

【问题讨论】:

我的建议 1. 尝试将 pandas df 转换为 numpy 数组。 2. 如果它不适合内存,请尝试减小输入大小。 3. RandomForest 会生成一个有很多很多分支的树,所以默认情况下会占用太多内存。所以尽量使用适当的功能 【参考方案1】:

当您的数据多于 ram 可以处理的数据时,您可以使用批处理。 Sklearn 内置了此功能,您必须在 RandomForestRegressor 中使用warm_start 参数

warm_start,默认=假 当设置为 True 时,重用上一次调用的解决方案来拟合并将更多估计器添加到集成中,否则,只需拟合一个全新的森林

你可以试试这样的

import numpy as np

model = RandomForestClassifier(warm_start = True, n_jobs=-1,random_state=42)

for df_split in np.array_split(df_temp, 500): # split into 500 dataframes 
   model.fit(df_split.drop("SalePrice", axis=1), df_split["SalePrice"])

如果您在加载 pandas 数据框本身时出现内存错误,请检查 this

你总是可以使用google colab 来获得更好的内存和显卡。它是免费的,而且很容易上手

【讨论】:

以上是关于内核已死并在运行单元以训练回归模型时自动重新启动的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 tensorflow 或 keras 重新训练具有新子集的线性回归模型?

根据更新的数据集自动重新训练分类模型

NLP领域的ImageNet时代到来:词嵌入「已死」,语言模型当立

Jupyter 错误 - 对于给定的一段代码,“内核似乎已经死亡,它将自动重新启动”

联邦学习实战-2-用FATE从零实现横向逻辑回归

Jupyter Notebook 中的内核死机和重启问题