python/sk学习如何在执行kmeans之后获取集群和集群名称

2024-06-13 20:06:49 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有下面的代码,在做了降维之后,我做了一个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:
第一个最常见的单词-计数
第二常见字数


Tags: numberdfcreatewithtransform集群cvfit
1条回答
网友
1楼 · 发布于 2024-06-13 20:06:49

如果您正在寻找集群中心的重要性,scikit-learn docs on kmeans表示有一个cluster_centers_形状的变量[n_clusters, n_features]可以帮助您解决这个问题。你知道吗

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

但是作为一个补充,我不认为你能直接得到计数,因为你在数据集上用SVD执行了LSA,这意味着你不仅仅有原始计数。你必须找出kmeans中最重要的SVD元素,然后找出哪些词构成了计数,才能得到你的计数。您可以使用SVD类下的变量components_来实现这一点。你知道吗

相关问题 更多 >