【问题标题】:Gensim Doc2vec model clustering into K-meansGensim Doc2vec 模型聚类成 K-means
【发布时间】:2017-08-02 07:38:26
【问题描述】:

我是 doc2vec 的新手,我希望你们中的一些人可以帮助我解决这个问题。 我问过很多人关于这个问题,但没有人知道解决方案。

我想做的是将 Doc2vec 结果聚类到 k-means 中。请看下面的代码。

mbk = MiniBatchKMeans(n_clusters=3, init_size=400, batch_size=300, verbose=1).fit(model_dm.docvecs[range([2000])                                                                                                 
MiniBatchKMeans.predict(mbk,mbk.labels_ )

我收到此错误。

TypeErrorTraceback (most recent call last)
<ipython-input-19-fbc57a13bf4b> in <module>()
      6 
      7 
----> 8 mbk = MiniBatchKMeans(n_clusters=3, init_size=400, batch_size=300, verbose=1).fit(model_dm.docvecs[:2000])
      9 
     10 #model_dm.docvecs.doctag_syn0[2000]

/usr/local/lib64/python2.7/site-packages/gensim/models/doc2vec.pyc in __getitem__(self, index)
    351             return self.doctag_syn0[self._int_index(index)]
    352 
--> 353         return vstack([self[i] for i in index])
    354 
    355     def __len__(self):

TypeError: 'slice' object is not iterable

【问题讨论】:

    标签: python k-means gensim doc2vec


    【解决方案1】:

    您正在尝试在这部分代码上聚集一个文档向量(准确地说是第 2001 个向量):

    .fit(model_dm.docvecs[2000]) 
    

    我假设您想要前 2000 个向量?

    编辑:

    查看 gensim 文档后,找不到获取文档向量切片的方法。但是查看source code DocvecsArray 接受单个键(int 或str)或键列表。有了它,您可以使用以下方法获得前 2000 个向量:

    .fit(model_dm.docvecs[range(2000)])
    

    它看起来并不令人满意,所以如果我以后能找到其他方法,我会修正我的答案。

    还请记住,这些不是第一个 2000 个向量,因为 gensim 似乎将 docvecs 存储为键:值对并且字典没有排序。

    第二次编辑:

    K-means 部分代码也需要修复,你调用的是MiniBatchKMeansclass'predict函数。并将类实例 (mbk) 作为参数。如果您需要预测其他任何内容,则需要调用类实例(在这种情况下为 mbk)predict 函数。我想你不会。

    您可以使用下面的代码获取分配的标签。

    mbk = MiniBatchKMeans(n_clusters=3, init_size=400, batch_size=300, verbose=1).fit(model_dm.docvecs[range(2000])
    mbk.labels_
    

    【讨论】:

    • 你好 Umutto,谢谢你在哪里。我试过了,但我遇到了一个新错误。请看下文。
    • @El-moro 嗯抱歉,我已经检查了文档,你是对的。将编辑我的答案。
    • 我在这个问题上苦苦挣扎了几天。我希望你能帮助我或其他人,看起来没有人知道解决方案。
    • @El-moro 试试这个,它对我有用。假设您没有使用显式标签训练模型应该没问题。
    • 对我来说它不起作用,请参阅下面的错误。
    猜你喜欢
    • 2015-04-11
    • 2019-04-06
    • 2016-02-04
    • 2011-08-13
    • 2013-08-08
    • 2013-02-14
    • 2018-01-14
    • 2021-01-19
    • 2011-04-11
    相关资源
    最近更新 更多