绘制多维K均值聚类NLP python

时间:2018-08-28 23:29:22

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

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

以下是数据框(text_df):

enter image description here

我使用了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)。

我将7个群集用于KMeans:

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()

enter image description here

基于NLP的群集是否正常?我希望有更多与众不同的集群。有没有办法清理此群集图? (即更清晰的分组,明显的边界,更靠近的聚类点等)。

1 个答案:

答案 0 :(得分:0)

K均值聚类不适用于高维数据(请参见this),通常在降维后进行(在您的示例中为PCA)。

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