首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sklearn Truncated SVD (LSA)实施的限制

sklearn Truncated SVD (LSA)实施的限制
EN

Stack Overflow用户
提问于 2018-07-10 19:52:24
回答 0查看 699关注 0票数 1

我有以下场景:我必须分析大量的文本文档(大约3000个),并执行一些聚类技术以获得对它的一些洞察。为了提取特征,我使用tf-idf,但它产生了超过20,000个特征,这使得使用聚类很难获得良好的结果。因此,我开始使用LSA来降低维数并提高结果。下面是使用sci-kit learn实现的示例代码:

代码语言:javascript
复制
dataset = fetch_20newsgroups(subset='all', categories=categories, 
                              shuffle=True, random_state=42)
data = dataset.data
labels = dataset.target

vectorizer =TfidfVectorizer(use_idf=True, stop_words='english', ngram_range=(1,1), 
                             min_df=2, max_df=0.5, strip_accents='unicode',
                             smooth_idf=1, sublinear_tf=1)
X = vectorizer.fit_transform(data)

svd = TruncatedSVD(n_components=k)
normalizer = Normalizer(copy=False)
lsa = make_pipeline(svd, normalizer)

X = lsa.fit_transform(X)

# clustering over X

如上所述,我有更多的20,000个功能,我希望我可以减少到一半,例如,如果我对n_components使用如此大的值,lsa.fit_transform(X)将返回确切的n_components = n_documents。唯一能达到预期效果的值是低于文档数的值。这是我在理论中遗漏的东西,还是实现有这个限制?据我从LSA技术的理论中了解到,要降维到的组件数量是无限的,并且直观地,我认为使用更接近于特征数量的组件比使用少于四分之一的组件更好,因为它将需要更少的概念分组到更高级别的概念中。如果我错了,请改正。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51264478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档