基于doc2vec的文本聚类

    使用gensim包中doc2vec工具预训练好的文档向量可以进行文本聚类,使用sklearn的KMeans工具载入预训练好的的文档向量设定簇数进行k-means聚类。

from sklearn.cluster import KMeans
from sklearn.externals import joblib
from gensim.models.doc2vec import Doc2Vec
'''
参数:
n_clusters:k值
max_iter:最大的迭代次数
n_init:用不同的初始化质心运行算法的次数,选择最好的结果
algorithm:数据稠密选elkan 数据稀疏选full, 自动选择auto
'''
feature = []
#载入doc2vec训练好的模型
model = Doc2Vec.load("model/daixia_d2c_200.model")
#将每一条数据转换为对应的文档向量,添加到一个列表中
for i in range(425):
    vector = list(model.docvecs[i])
    feature.append(vector)
#设定簇数
clf = KMeans(n_clusters=4)
#模型训练
s = clf.fit(feature)
#保存模型
joblib.dump(clf,'model/km_200.model')
#模型参数
print(s)
#输出簇心向量
print(clf.cluster_centers_)
#输出每个样本所属的簇
print(clf.labels_)
#用来评估簇的个数是否合适,距离越小说明簇分的越好,选取临界点的簇个数
print(clf.inertia_)
#载入模型
clf = joblib.load('model/km_200.model')
print(clf.predict([list(model.docvecs[0])]))

阅读更多
换一批

没有更多推荐了,返回首页