繁体   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