【发布时间】:2020-07-29 21:36:14
【问题描述】:
我有一个使用 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)。
我这样做的方式是否正确?
如何将其绘制在图表上以可视化集群?
谢谢。
【问题讨论】:
标签: python machine-learning scikit-learn gensim dbscan