【问题标题】:Graphing multi-dimensional K-means cluster NLP python绘制多维 K-means 集群 NLP python
【发布时间】:2018-08-28 23:29:21
【问题描述】:

我有一个为 NLP 分类器设计的多维向量。

这是数据框(text_df):

我使用了 TfidfVectorizer 创建向量:

from sklearn.feature_extraction.text import TfidfVectorizer

tfidf_v = TfidfVectorizer(max_df=0.5,
                          max_features=13000,
                          min_df=5,
                          stop_words='english',
                          use_idf=True,
                          norm=u'l2',
                          smooth_idf=True
                          )

X = tfidf_v.fit_transform(corpus).toarray()
y = text_df.iloc[:,1].values

X 的形状是 (13834, 2701)。

我为 KMeans 使用了 7 个集群:

from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=7,random_state=42)

我尝试使用 PCA,但我不确定图表是否正确。

from sklearn.decomposition import PCA

X_pca = PCA(2).fit_transform(X)

plt.scatter(X_pca[:,0],X_pca[:,1],c=y_kmeans)
plt.title("Clusters")
plt.legend()
plt.show()

这对于基于 NLP 的集群是否正常?我希望有更多独特的集群。有没有办法清理这个集群图? (即更清晰的分组、不同的边界、更靠近的聚类点等)。

【问题讨论】:

标签: python nlp k-means scatter-plot dimensionality-reduction


【解决方案1】:

K-Means 聚类在高维数据上效果不佳(请参阅 this),通常在降维(PCA,在您的示例中)之后完成。

顺便说一句,如果您的目标是根据主题对文档进行聚类,那么值得探索topic modelling。然后可以使用主题建模算法识别的主题分布来完成聚类。

【讨论】:

  • 我使用了 PCA(2-components),然后绘制了您在上面看到的结果。我查看了主题建模,它超出了我在这种情况下要完成的工作范围。我希望制作能够按作者分组句子的集群,以查看作者是否始终在每个集群中分组。
猜你喜欢
  • 2017-08-10
  • 2019-06-10
  • 2017-07-28
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 2014-12-26
  • 2017-03-06
相关资源
最近更新 更多