在sklearn中持久化数据

我正在使用scikit-learn来对文本文档进行聚类。我使用了CountVectorizer、TfidfTransformer和MiniBatchKMeans这些类来帮助我完成这项工作。系统中不断添加新的文本文档,这意味着我需要使用上述类来转换文本并预测聚类。我的问题是:我应该如何将数据存储到磁盘上?我应该简单地将vectorizer、transformer和kmeans对象进行pickle处理吗?我应该只保存数据吗?如果是的话,我如何将数据重新添加到vectorizer、transformer和kmeans对象中?

任何帮助都将不胜感激


回答:

这取决于你想要做什么。

如果你想在训练集上找到一些固定的聚类中心,然后稍后重用它们来计算新数据的聚类分配,那么pickle模型(或者只保存vectorizer的词汇表和其他模型构造参数以及聚类中心位置)是可以的。

如果你想要使用新数据进行聚类,你可能需要使用新数据和旧数据的联合来重新训练整个流程,使得vectorizer的词汇表能够为新词构建新的特征(维度),并让聚类算法找到更符合完整数据集结构的聚类中心。

请注意,未来我们将提供哈希向量化器(例如,参见这个关于哈希变换器的拉取请求作为第一个构建块),因此存储词汇表将不再必要(但你将失去对特征维度“含义”进行内省的能力)。

关于pickle模型与使用你自己的参数表示,我已经在你之前的问题中回答了这一部分,这里是链接:Persist Tf-Idf data

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注