【发布时间】:2016-04-23 00:16:17
【问题描述】:
我正在做一个机器学习项目,为此我正在使用 Python 的 pickle 模块。
基本上,我正在解析一个巨大的数据集,这在一次执行中是不可能的,这就是为什么我需要保存分类器对象并在下一次执行中更新它。
所以我的问题是,当我使用新数据集再次运行程序时,已经创建的泡菜对象是否会被修改(或更新)。如果不是,那么每次运行程序时如何更新同一个泡菜对象。
save_classifier = open("naivebayes.pickle","wb")
pickle.dump(classifier,save_classifier)
save_classifier.close()
【问题讨论】:
-
不会自动发生任何事情。下一次运行程序需要打开文件,将其中的 pickle 加载回一个普通的 Python 对象,修改该对象,然后像上面一样将其保存回来。
-
@KirkStrauser 这就是我要说的。我应该只留下这样的代码吗?为下一次运行。已经创建的 naivebayes.pickle 会更新吗?
-
分类器是否适合 RAM 而不会影响您的其余计算?
-
@Arqam 文件中的泡菜并没有什么“特别”之处。这只是一个普通的文件。如果您更新
classifier,然后再次运行上面的代码,naivebayes.pickle将保留新版本。但这不会自行发生:在您运行pickle.dump行之前,您对classifier的任何修改都不会写入naivebayes.pickle。 -
@sobek 我没有立即完成完整的数据集,这就是它能够适应的原因。我正在破坏数据集,然后通过对每个细分数据集进行训练来修改我的分类器对象。