[英]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:
第一個最常見的單詞-計數
第二個最常見的單詞-計數
如果您正在尋找集群中心的重要性, 關於kmeans的scikit-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.