使用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])]))