使用pyLDAvis可视化LDA模型时出现AttributeError错误求助
解决pyLDAvis调用时CountVectorizer的AttributeError问题
问题根源
你碰到的AttributeError: 'CountVectorizer' object has no attribute 'get_feature_names'是scikit-learn版本兼容问题:新版本scikit-learn(0.24及以上)已经把get_feature_names()替换成了get_feature_names_out(),但pyLDAvis.sklearn内部还在调用旧方法,导致报错。你用TruncatedSVD时调用get_feature_names_out()正常,正好说明你的scikit-learn是新版本。
两种修复方案
方案1:给Vectorizer添加兼容方法
在创建vectorizer对象后,手动添加一个get_feature_names方法,指向新的get_feature_names_out,让pyLDAvis能正常调用:
# 创建vectorizer后追加这一行 vectorizer.get_feature_names = lambda: vectorizer.get_feature_names_out()
之后再运行pyLDAvis的代码就不会报错了:
pyLDAvis.enable_notebook() dash = pyLDAvis.sklearn.prepare(lda, data_vectorized, vectorizer, mds='tsne') dash
方案2:降级scikit-learn版本
如果不想改代码,可以把scikit-learn降到还保留get_feature_names()的版本:
pip install scikit-learn==0.23.2
内容的提问来源于stack exchange,提问作者Blue_point225
相关产品推荐
相关产品推荐

