在sklearn中保留数据

时间:2012-06-21 15:41:01

标签: python machine-learning data-mining scikit-learn

我正在使用scikit-learn来集群文本文档。我正在使用CountVectorizer,TfidfTransformer和MiniBatchKMeans这两个类来帮助我做到这一点。 新文本文档一直添加到系统中,这意味着我需要使用上面的类来转换文本并预测集群。我的问题是:我应该如何将数据存储在磁盘上? 我应该简单地挑选矢量化器,变换器和kmeans对象吗? 我应该保存数据吗?如果是这样,我如何将它添加回矢量器,变换器和kmeans对象?

非常感谢任何帮助

2 个答案:

答案 0 :(得分:6)

这取决于你想做什么。

如果您想在训练集上找到一些固定的聚类中心,然后在以后重新使用它们来计算新数据的聚类分配,那么选择模型(或者只保存矢量化器的词汇表和其他模型构造函数参数和集群中心位置)没问题。

如果您想要使用新数据进行聚类,您可能希望使用新数据+旧数据的联合重新训练整个管道,以使矢量化程序的词汇表能够构建新功能(维度)对于新单词,让聚类算法找到更好地匹配完整数据集结构的聚类中心。

请注意,将来我们将提供散列矢量化器(例如参见此pull request on hashing transformers作为第一个构建块),因此不再需要存储词汇表(但是你将失去内省的能力)特征维度的“意义”。

至于酸洗模型与使用您自己的参数表示他们的参数我在上一个问题中回答了这一部分:Persist Tf-Idf data

答案 1 :(得分:4)

是的,我认为sk-learn的一般答案是pickle并祈祷。

在我看来,这是非常脆弱的,相比之下,有一个不依赖于实现细节的文档序列化格式。但也许他们知道这一点,并且不会对他们的班级做出倒退的不相容的改变?