我使用以下代码保存随机森林模型。我正在使用cPickle来保存训练有素的模型。当我看到新数据时,我可以逐步训练模型吗? 目前,列车组有大约2年的数据。有没有办法在另外两年训练,并且(有点)将它附加到现有的已保存模型。
$ ./a.out 2 "Soa" "8" "m" "4" "8"
48
4Soa
4m
84
88
8Soa
8m
Soa4
Soa8
Soam
m4
m8
mSoa
编辑1:我没有计算能力来同时训练模型4年的数据。
答案 0 :(得分:5)
sklearn User Guide中讨论了您正在谈论的内容,以及逐步更新其他数据的模型:
虽然所有算法都无法逐步学习(即没有 一次看到所有实例),所有估算器都实现了 partial_fit API是候选者。实际上,学习的能力 从一小批实例中逐步增加(有时称为“在线” 学习“)是核心学习的关键,因为它保证了任何 给定时间主要内容中只有少量实例 存储器中。
它们包含一个实现partial_fit()
的分类器和回归程序列表,但RandomForest不在其中。您还可以确认RFRegressor未实现部分适合on the documentation page for RandomForestRegressor。
一些可能的前进方式:
partial_fit()
的回归程序,例如SGDRegressor feature_importances_
属性,然后在删除不重要的功能后,在3年或4年的数据上重新训练模型tree_depth
参数以限制模型的复杂程度。这节省了计算时间,因此可以允许您使用所有数据。它还可以防止过度拟合。使用交叉验证为您的问题选择最佳树深度超参数n_jobs=-1
,请在您的计算机上使用多个核心/处理器。