使用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
相关产品推荐
相关产品推荐

