【发布时间】:2018-02-27 10:13:40
【问题描述】:
如何在 sklearn python 中重新训练我现有的机器学习模型?
我有数千条记录用于训练我的模型并使用pickle 转储为.pkl 文件。
第一次训练模型时,我在创建逻辑回归对象时使用了warmStart = True 参数。
示例代码:
log_regression_model = linear_model.LogisticRegression(warm_start = True)
log_regression_model.fit(X, Y)
# Saved this model as .pkl file on filesystem like pickle.dump(model,open('model.pkl', wb))
我想通过每天获得的新数据来保持最新状态。 为此,我打开现有模型文件并获取最近 24 小时的新数据并再次训练它。/
示例代码:
#open the model from filesystem
log_regression_model = pickle.load(open('model.pkl','rb'))
log_regression_model.fit(X, Y) # New X, Y here is data of last 24 hours only. Few hundreds records only.
但是,当我通过从文件系统加载模型来重新训练模型时,它似乎会删除使用 数千个 记录创建的现有模型,并创建一个只有 数百个 记录的新模型strong> 过去 24 小时的记录(具有数千条记录的模型在文件系统上的大小为 3MB,而新的再训练模型仅为 67KB)
我尝试过使用 warmStart 选项。 如何重新训练我的 LogisticRegression 模型?
【问题讨论】:
-
一个问题:可以不将新数据添加到原始数据中,然后在整个数据集上重新训练吗?作为旁注,我会检查以下链接:scikit-learn.org/stable/modules/scaling_strategies.html。然后我会考虑神经网络中经常使用的小批量策略(你需要自己实现梯度下降),但对于逻辑回归来说会很容易(检查udata.science/2017/08/31/…)。但同样使用这种策略,您需要对整个数据集进行几次传递......
-
用新旧数据再次训练模型效率不高,数据量大,现有资源,训练模型需要24小时以上,
标签: python machine-learning scikit-learn logistic-regression