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]]