Kmean текстовая кластеризация с использованием скрытого семантического анализа

При выполнении кластеризации текста я понимаю, что вектор высокой размерности влияет на производительность, и нормальная тенденция заключается в применении методов уменьшения размеров до кластеризации. После этого я выбрал LSA и реализовал его с помощью следующего кода. В приведенном ниже коде я использовал Components=2, чтобы взять первые два компонента, затем передал X_train_lsa алгоритму k-mean и, наконец, проверил документы в указанном кластере (в этом кластере 2). Однако у меня есть путаница, и я могу использовать km.labels_, чтобы найти документ в кластере. причина в том, что кластеризация k-средних в этом примере выполняется с уменьшенным измерением, и, следовательно, индекс возврата km.labels_ будет (на мой взгляд) ссылаться на уменьшенное измерение (в этом случае первые два компонента, полученные из svd), поэтому я хочу знать, как на самом деле получить индексы документов, т.е. документы в кластерах, полученных из kmean. другими словами, следующая строка вернет документ в кластере, или мне нужно выполнить некоторую обратную функцию: documentincluster=X_train_lsa[np.where(km.labels_ == Clusternumber) [0]]

svd = TruncatedSVD(Components)
lsa = make_pipeline(svd, Normalizer(copy=False))

# Run SVD on the training data, then project the training data.
X_train_lsa = lsa.fit_transform(X_train_tfidf)
# use X_train_lsa in kmean clustering
km = KMeans(init='k-means++', max_iter=10000, n_init=1,
            verbose=0,random_state=3425,n_clusters=num_clusters)#giving 

km.fit(X_train_lsa) 
clusters = km.labels_.tolist()
#extracting document in the cluster
documentincluster=X_train_lsa[np.where(km.labels_ == Clusternumber) [0]]

0 ответов

Другие вопросы по тегам