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

使用pyLDAvis可视化LDA主题时遇AttributeError问题求助

解决方法

这个错误是因为你使用的sklearn 1.2.2版本中,TfidfVectorizer已经移除了get_feature_names()方法,替换为get_feature_names_out(),但pyLDAvis的sklearn适配逻辑仍在调用旧方法,导致触发属性错误。

最简单的修复方式是给你的vectorizer对象手动添加兼容方法,让旧方法指向新的API:

import pyLDAvis
import pyLDAvis.sklearn
import matplotlib.pyplot as plt
from sklearn.decomposition import LatentDirichletAllocation as LDA
from sklearn.feature_extraction.text import TfidfVectorizer  # 补充你遗漏的导入语句

%matplotlib inline

vectorizer = TfidfVectorizer(stop_words='english')
vectors = vectorizer.fit_transform(df['cons'])  # 无需转成稠密矩阵,pyLDAvis支持稀疏矩阵

# 添加兼容方法,让旧API指向新方法
vectorizer.get_feature_names = vectorizer.get_feature_names_out

# 确保你已经初始化并拟合了LDA模型(示例)
# lda = LDA(n_components=5, random_state=42)
# lda.fit(vectors)

pyLDAvis.enable_notebook()
panel = pyLDAvis.sklearn.prepare(lda, vectors, vectorizer, mds='tsne')
pyLDAvis.display(panel)

额外注意两个细节:

  • 你原代码遗漏了TfidfVectorizer的导入语句,必须补上才能正常运行
  • 不需要将vectors转为稠密矩阵(.todense()),pyLDAvis可直接处理稀疏矩阵,还能节省内存

如果上述方法无效,也可以尝试升级pyLDAvis到最新版本,新版本已适配sklearn的API变更:

pip install --upgrade pyLDAvis

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:02:06