无法对齐图表,因为多标签doc2vec返回的doctag_syn0中的项目数多于训练数据中的项目数

我正在训练一个多标签的doc2vec模型,因此它包括典型的文档“ID”标签,还包含一个标签“类别1”。我试图绘制结果,以便在二维图中(使用LargeVis)显示文档分布,并且能够为不同的标签着色。我的问题是模型返回的向量数量比训练观察值多5个,这使得将原始标签与向量对齐变得困难:

In[1]: data.shape Out[1]: (17717,5)

在100个参数上训练模型

In[2]: model.docvecs.doctag_syn0.shapeOut[2]: (17722,100) 

我不知道这额外的5个观察值是否会改变向量的顺序,或者它们是否只是追加到末尾。我想避免对文档ID使用字符串标签,因为我正在准备这部分代码以便在更大的数据集上使用。我在一个谷歌小组中找到了一个解释 https://groups.google.com/forum/#!topic/gensim/OdvQkwuADl0,该解释说明每个文档使用多个标签可能会导致这种类型的输出。然而,我还没有找到任何方法来避免或纠正这种情况,无论是在论坛还是文档中。


回答:

学习的文档向量数量将等于您提供的唯一标签数量。看起来您可能提供了17,717个唯一ID,然后是5个重复的类别标签。因此,总共有17,722个已知的文档标签(以及相应的学习文档向量)。所以,这是预期的行为。

如果您需要将这17,717个每文档向量传递给其他过程(如降维到2维),您将需要从模型中提取它们。您可以逐个提取它们 – model.docvecs[doc_id] – 并将它们放入下一步所需的任何形式。

如果您的文档ID碰巧是简单的整数,从0到17,716,那么它们实际上将是model.docvecs.doctag_syn0数组中的前17,716个条目,这可能会使事情变得更简单 – 您可能只需使用该数组的一个视图。(最后五行将是字符串标签。)

我建议您先在没有添加次要类别字符串标签的额外复杂性情况下完成所有步骤。这样的额外标签在不同的情况下可能会帮助或损害向量在下游任务中的有用性,但肯定(如您所见)会使事情变得稍微复杂一些。因此,在没有这种复杂性的情况下获得基线结果和输出可能会有所帮助。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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