调用CountVectorizer的get_feature_names()报AttributeError,求解决方案
解决CountVectorizer的get_feature_names/get_feature_names_out问题
1. 确认scikit-learn版本
get_feature_names_out()是scikit-learn 0.24.0及以上版本新增的方法,替代了已废弃的get_feature_names()。先检查版本是否达标:
import sklearn print(sklearn.__version__)
若版本低于0.24,在当前工作环境中重新执行升级命令:
- pip方式:
pip install --upgrade scikit-learn - conda方式:
conda update scikit-learn
2. 必须先拟合CountVectorizer
调用get_feature_names_out()前,需通过fit()或fit_transform()让模型学习语料特征,否则会触发异常。正确代码示例:
from sklearn.feature_extraction.text import CountVectorizer # 示例语料 corpus = ["Hello world", "Hello stackoverflow", "Stackoverflow answers"] vectorizer = CountVectorizer() # 关键步骤:拟合语料 vectorizer.fit(corpus) # 也可通过fit_transform同时生成词频矩阵并完成拟合 # X = vectorizer.fit_transform(corpus) # 获取特征词列表 vocab = vectorizer.get_feature_names_out() print(vocab)
3. 排查其他潜在问题
- 若在Pipeline中使用,需确保整个Pipeline已完成
fit()操作,再从vectorizer组件调用方法。 - 检查是否误导入了其他同名Vectorizer类,确保使用的是
sklearn.feature_extraction.text.CountVectorizer。
内容的提问来源于stack exchange,提问作者Elina Makipova
相关产品推荐
相关产品推荐

