簡體   English   中英

python / sklearn-在執行kmeans之后如何獲取集群和集群名稱

[英]python/sklearn - how to get clusters and cluster names after doing kmeans

因此,我有以下代碼在進行降維后在其中進行kmeans聚類。

# Create CountVectorizer
vec = CountVectorizer(token_pattern=r'[a-z-]+', 
                              ngram_range=(1,1), min_df = 2, max_df = .8,
                              stop_words=ENGLISH_STOP_WORDS)

cv = vec.fit_transform(X)
print('Dimensions: ', cv.shape) 

# Create LSA/TruncatedSVD with full dimensions
cv_lsa = TruncatedSVD(n_components=cv.shape[1]-1)
cv_lsa_data = cv_lsa.fit_transform(cv)

# Find dimensions with 80% variance explained
number = np.searchsorted(cv_lsa.explained_variance_ratio_.cumsum(), .8) + 1
print('Dimensions with 80% variance explained: ',number)

# Create LSA/TruncatedSVD with 80% variance explained
cv_lsa80 = TruncatedSVD(n_components=number)
cv_lsa_data80 = cv_lsa80.fit_transform(cv)

# Do Kmeans when k=4
kmean = KMeans(n_clusters=4)
clustered = km.fit(cv_lsa_data80)

現在,我只能繼續下一步。 我想獲取kmeans對象標識的聚類,並獲取這些聚類中排名前10位/最常用的單詞。 就像是:

集群1:
第一個最常見的單詞-計數
第二個最常見的單詞-計數

類別2:
第一個最常見的單詞-計數
第二個最常見的單詞-計數

如果您正在尋找集群中心的重要性, 關於kmeansscikit-learn文檔說,有一個形狀為[n_clusters, n_features]的變量cluster_centers_可以為您提供幫助。

km.fit(...)
cluster_centers = km.cluster_centers_
first_cluster = cluster_centers[0] # Cluster 1

但是作為補充,我認為您無法直接獲得計數,因為您對數據集執行了帶有SVD的LSA,這意味着您不僅擁有原始計數。 您必須從數量上找出kmeans中最重要的SVD元素,然后找出組成單詞的單詞才能得到您的單詞。 您可以使用SVD類下的components_變量來執行此操作。

暫無
暫無

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

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