簡體   English   中英

如何使用Python將“文本文檔”與“球形k均值”聚類?

[英]How to cluster “text document” with “spherical k-means” using Python?

我已經完成了傳統的k均值文本聚類。 但是,現在,我需要將程序修改為“球形k均值文本聚類”,但尚未成功。

我已經在網站上搜索了解決方案,但是仍然無法成功修改我的程序。 以下是對我的項目應有幫助的資源,但我仍然找不到解決方法。

  1. https://github.com/jasonlaska/spherecluster
  2. https://github.com/khyatith/Clustering-newsgroup-dataset
  3. Python中的球形k均值實現

這是我傳統的K-means程序:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score
from sklearn.externals import joblib #store model

vectorizer = TfidfVectorizer(stop_words='english')
X = vectorizer.fit_transform(tag_document) //tag_document is a list that contains many strings

true_k = 3 //assume that i want to have 3 clusters
model = KMeans(n_clusters=true_k, init='k-means++', max_iter=100, n_init=1)
model.fit(X)

#store
 joblib.dump(model,'save/cluster.pkl')

#restore
clu2 = joblib.load('save/cluster.pkl')


order_centroids = model.cluster_centers_.argsort()[:, ::-1]
terms = vectorizer.get_feature_names()

我希望通過“球形k均值聚類”將文本文檔聚類。

首先,當兩個相似文本之間的余弦距離較小時,您需要檢查文本是否相似。 之后,您可以對向量進行歸一化並使用kmeans進行聚類。

我做了這樣的事情:

k = 20
kmeans = KMeans(n_clusters=k,init='random', random_state=0)
normalizer = Normalizer(copy=False)
sphere_kmeans = make_pipeline(normalizer, kmeans)

sphere_kmeans = sphere_kmeans.fit_transform(word2vec-tfidf-vectors)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM