绘制 Doc2Vec 模型的 DBSCAN 聚类

Plotting DBSCAN Clustering of Doc2Vec model

我有一个用 Gensim 创建的 Doc2Vec 模型,我想使用 scikit-learn DBSCAN 来寻找模型中的句子聚类。

我正在努力找出如何最好地转换模型向量以使用 DBSCAN 和绘图集群,但我在网上找不到很多直接适用的例子。

这是我目前的情况:

import gensim
import numpy as np
from sklearn.cluster import DBSCAN
import matplotlib.pyplot as plt

fnIn = 'NLPModels/doc2VecModel_vector_size{0}_epochs{1}.bin'

def doCluster(vector_size, epochs):
    model = gensim.models.doc2vec.Doc2Vec.load(fnIn.format(vector_size, epochs))

    Y = model.docvecs.index2entity # tags

    X = [] # Document vectors
    for tag in Y:
        X.append(model.docvecs[tag])

    db = DBSCAN(eps=.1, min_samples=5, metric='cosine').fit_predict(X)
    labels = set(db)
    print(labels)


doCluster(100, 10)

输出:{0, 1, -1}

我认为这是两个聚类(0 和 1)和异常值 (-1)。

我这样做的方式正确吗?

我如何将其绘制在图表上以可视化集群?

谢谢。

这里有两个问题:

  1. 可视化:我建议你细化 DBSCAN clustering example code

  2. 如果您正确地进行了聚类。 乍一看-是的。