Построение многомерного кластера K-средних NLP python - PullRequest
0 голосов
/ 29 августа 2018

У меня есть многомерный вектор, разработанный для классификатора НЛП.

Вот кадр данных (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

Форма Х (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

Это нормально для кластеров на основе НЛП? Я надеялся на более характерные кластеры. Есть ли способ очистить этот кластерный граф? (то есть более четкие группировки, четкие границы, точки скопления ближе друг к другу и т. д.).

1 Ответ

0 голосов
/ 29 августа 2018

Кластеризация K-Means не очень хорошо работает с данными больших размеров (см. это ) и обычно выполняется после уменьшения размерности (в вашем примере PCA).

Кроме того, если вы стремитесь сгруппировать документы по темам, стоит изучить моделирование тем . Затем кластеризация может быть выполнена с использованием распределений по темам, определенным алгоритмами моделирования тем.

...