Я после этого урока из Scikit узнать на текстовой кластеризации с помощью K-Means: http://scikit-learn.org/stable/auto_examples/text/document_clustering.htmlЗачем использовать НУА, прежде чем K-средства при выполнении наслоение текста
В примере, необязательно LSA (с использованием SVD) используется для выполнить уменьшение размерности.
Почему это полезно? Число измерений (функций) уже можно контролировать в TF-IDF-векторе, используя параметр «max_features».
Я понимаю, что LSA (и LDA) также являются методами моделирования тем. Разница с кластеризацией заключается в том, что документы относятся к нескольким темам, но только к одному кластеру. Я не понимаю, почему LSA будет использоваться в контексте кластеризации K-Means.
Пример кода:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
documents = ["some text", "some other text", "more text"]
tfidf_vectorizer = TfidfVectorizer(max_df=0.5, max_features=10000, min_df=2, stop_words='english', use_idf=True)
X = tfidf_vectorizer.fit_transform(documents)
svd = TruncatedSVD(1000)
normalizer = Normalizer(copy=False)
lsa = make_pipeline(svd, normalizer)
Xnew = lsa.fit_transform(X)
model = KMeans(n_clusters=10, init='k-means++', max_iter=100, n_init=1, verbose=False)
model.fit(Xnew)
Спасибо @elyase, это помогает. Поэтому использование LSA (SVD) приведет к улучшению кластеров по сравнению с простым использованием max_features = 10 в TFIDF. Является ли LSA (SVD) похожим на PCA или как я должен это видеть? Какова связь между LSA и PCA? –
Я думаю, вы можете найти ответ здесь http://stats.stackexchange.com/questions/65699/lsa-vs-pca-document-clustering. Это немного отличается, когда вы уменьшаете размерность. PCA вычисляет матрицу ковариации вашего входного массива. Для SVD (или LSA) он использует scipy для вычисления матрицы разложения сразу (X = U * S * V.T). Для scikit-learn специально вы не можете использовать разреженную матрицу для модели PCA, поэтому, если у вас есть tf-idf-матрица, использование SVD может быть лучшим выбором. – titipata