python/sklearn-如何在执行kmeans之后获取集群和集群名称
所以我有下面的代码,在进行降维之后,我进行了kmeans聚类python/sklearn-如何在执行kmeans之后获取集群和集群名称,python,scikit-learn,k-means,dimensionality-reduction,Python,Scikit Learn,K Means,Dimensionality Reduction,所以我有下面的代码,在进行降维之后,我进行了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.
# 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组:
第一最常见的单词-计数
第二个最常见的单词计数如果您正在寻找聚类中心的重要性,则表示有一个形状可变的聚类中心[n_clusters,n_features]可以帮助您解决问题 公里。适合。。。 集群_中心=公里。集群_中心_ 第一个\u集群=集群\u中心[0]集群1
但作为补充,我不认为你能直接得到计数,因为你在数据集上用SVD执行了LSA,这意味着你不仅仅有原始计数。您必须按大小计算出kmeans中最重要的SVD元素,然后计算出哪些词构成了计数,以获得计数。您可以使用SVD类下的可变组件来实现这一点。因此,听起来您已经使用该模型进行了构建、拟合和预测。现在我要做的是将[count_1]、[count_2]、[labels]三列添加到数据框cv中。只需执行cv['labels']=km,标签就很容易获得。predictcv_lsa_data80对于其他的是,当您可以执行逻辑,将短语中的所有单词按空格(如string=cv[i])拆分,然后使用相同的逻辑返回前两个频繁出现的单词。一旦你得到了所有这些变量,你就可以隔离“指南”。你走对了,谢谢!我弄明白了它的工作原理。我想我不知道下一步该怎么办