我有一个为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)。
我将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()
基于NLP的群集是否正常?我希望有更多与众不同的集群。有没有办法清理此群集图? (即更清晰的分组,明显的边界,更靠近的聚类点等)。
答案 0 :(得分:0)
K均值聚类不适用于高维数据(请参见this),通常在降维后进行(在您的示例中为PCA)。
顺便说一句,如果您的目标是根据文档的主题对文档进行聚类,则值得探索topic modelling。然后,可以使用主题建模算法确定的主题分布来完成聚类。