绘制 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)。
我这样做的方式正确吗?
我如何将其绘制在图表上以可视化集群?
谢谢。
这里有两个问题:
可视化:我建议你细化 DBSCAN clustering example code
如果您正确地进行了聚类。
乍一看-是的。
我有一个用 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)。
我这样做的方式正确吗?
我如何将其绘制在图表上以可视化集群?
谢谢。
这里有两个问题:
可视化:我建议你细化 DBSCAN clustering example code
如果您正确地进行了聚类。 乍一看-是的。