【发布时间】:2016-07-03 09:22:17
【问题描述】:
我正在尝试使用两类文本分类。通常我会创建训练模型的 Pickle 文件,并在训练阶段加载这些 pickle 以消除重新训练。
当每个班级有 12000 条评论 + 超过 50000 条推文时,训练模型大小变为 1.4 GB。
现在将这么大的模型数据存储到 Pickle 并加载它确实不可行也不可取。
有没有更好的替代方案?
这里是示例代码,我尝试了多种腌制方式,这里我使用了dill包
def train(self):
global pos, neg, totals
retrain = False
# Load counts if they already exist.
if not retrain and os.path.isfile(CDATA_FILE):
# pos, neg, totals = cPickle.load(open(CDATA_FILE))
pos, neg, totals = dill.load(open(CDATA_FILE, 'r'))
return
for file in os.listdir("./suspected/"):
for word in set(self.negate_sequence(open("./unsuspected/" + file).read())):
neg[word] += 1
pos['not_' + word] += 1
for file in os.listdir("./suspected/"):
for word in set(self.negate_sequence(open("./suspected/" + file).read())):
pos[word] += 1
neg['not_' + word] += 1
self.prune_features()
totals[0] = sum(pos.values())
totals[1] = sum(neg.values())
countdata = (pos, neg, totals)
dill.dump(countdata, open(CDATA_FILE, 'w') )
更新:大泡菜背后的原因是,分类数据非常大。我考虑过 1-4 克用于特征选择。分类数据集本身大约 300mb,因此考虑使用多重方法进行特征选择会创建大型训练模型。
【问题讨论】:
-
对
dill一点也不熟悉,但你看过它创建的泡菜吗?我猜你可以识别出不需要腌制的东西,并为你自己创建一个更好的序列化。显然,更多的工作,但也许至少用关于泡菜这么大的原因的观察来更新这个问题......? -
@tripleee:大泡菜背后的原因是,分类数据非常大。我考虑过 1-4 克用于特征选择。
标签: python machine-learning classification pickle text-classification