You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TfidfVectorizer设max_df=1.0仍保留跨文档词汇的问题

问题解析与解决

核心误解:max_df参数的正确含义

你完全搞反了max_df的作用:

  • max_df=1.0的意思是允许出现在100%文档中的词被保留,根本不会过滤任何高频词,这和你理解的“剔除出现在至少一个其他文档中的词”完全相反。
  • 只有当max_df设置为小于1.0的数值时(比如max_df=0.8),才会过滤掉出现在超过对应比例文档里的高频词。

为什么"book"没被过滤

你的参数配置里:

  • min_df=5:要求词至少出现在5个文档中才会被保留,"book"显然满足这个条件。
  • max_df=1.0:允许词出现在所有文档里,所以"book"完全符合保留规则,自然会出现在后续的聚类结果中。

解决办法

如果想过滤掉这类在绝大多数文档中都出现的通用词,把max_df调整为一个小于1.0的比例值,比如:

max_df = 0.8  # 剔除出现在超过80%文档中的词
vectorizer = TfidfVectorizer(stop_words='english', min_df=5, 
                             max_df=max_df, max_features=100000)
c_vectorizer = CountVectorizer(stop_words='english', min_df=5,   
                               max_df=max_df, max_features=100000)

这样像"book"这类高频通用词就会被过滤掉,不会出现在聚类主题里了。

内容的提问来源于stack exchange,提问作者per web

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:25:36