所以我有下面的代码,在做了降维之后,我做了一个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:
第一个最常见的单词-计数
第二常见字数
如果您正在寻找集群中心的重要性,scikit-learn docs on kmeans表示有一个
cluster_centers_
形状的变量[n_clusters, n_features]
可以帮助您解决这个问题。你知道吗但是作为一个补充,我不认为你能直接得到计数,因为你在数据集上用SVD执行了LSA,这意味着你不仅仅有原始计数。你必须找出kmeans中最重要的SVD元素,然后找出哪些词构成了计数,才能得到你的计数。您可以使用SVD类下的变量
components_
来实现这一点。你知道吗相关问题 更多 >
编程相关推荐