NMF как метод кластеризации в Python Scikit - PullRequest
0 голосов
/ 31 января 2019

Я работаю над реализацией скрипта Python для кластеризации текстовых данных NMF.В своей работе я использую реализацию Scikit NMF, однако, как я понимаю, в Scikit NMF больше похож на метод классификации, чем на метод кластеризации.

Я разработал простой скрипт, работающий с некоторыми образцами арктик.Я препроцессирую их и выкладываю в качестве ввода для NMF.Согласно работам моего профессора, я получаю несколько кластеров, но я не знаю, как их визуализировать / представить.

У кого-нибудь из вас есть идеи, как сделать это удобным для чтения человеком?:)

Код основного скрипта ниже:

from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn.cluster import KMeans
from sklearn.preprocessing import normalize
from sklearn.decomposition import LatentDirichletAllocation, NMF
from sklearn.preprocessing import normalize
import pandas as pd
from preprocess import *


# loading data
raw_text_data = loading_bbc_datasets(5)

text_data = text_preparing(raw_text_data)
tf_vectorizer = TfidfVectorizer()
Y = tf_vectorizer.fit_transform(text_data)
Y_norm = normalize(Y)

nmf = NMF(n_components=5, random_state=1, alpha=.1, l1_ratio=0.5)
A = nmf.fit_transform(Y_norm)
X = nmf.components_
features = tf_vectorizer.get_feature_names()
print(features)

AF = pd.DataFrame(Y_norm.toarray())
WF = pd.DataFrame(A)
HF = pd.DataFrame(X)

AF.to_csv('Y.csv', sep=',', header=features)
WF.to_csv('A.csv', sep=',', header=['C1', 'C2', 'C3', 'C4', 'C5'])
HF.to_csv('X.csv', sep=',', header=features)

1 Ответ

0 голосов
/ 31 января 2019

NMF - это не метод классификации, это метод уменьшения размерности.Когда вы обрабатываете свои тексты с помощью CountVectorizer, у вас большое количество измерений, и NMF позволяет уменьшить его.

NMF приближает документы * матрица условий X к: W * H.

Новые измерения можно рассматривать как темы, поэтому для данного документа вы можете увидеть в W, к каким темам документ относится больше всего, поскольку значения неотрицательны (если значение высокое, документ тесно связан с темой).

Аналогично, для данной темы вы можете получить слова, тесно связанные с ней, используя H.

Чтобы ответить на ваш вопрос, вы можете сгруппировать документы по темам и представить каждую тему по-человечески.по-дружески, давая наиболее родственные слова.

...