我正在学习Scikit的本教程,以学习使用K-Means进行文本聚类:http ://scikit-learn.org/stable/auto_examples/text/document_clustering.html
在该示例中,可选地,使用LSA(使用SVD)执行降维。
为什么这有用?尺寸(功能)的数量已经可以使用“ max_features”参数在TF-IDF矢量化器中进行控制。
我知道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)
Run Code Online (Sandbox Code Playgroud)