python - 属性错误 : getfeature_names not found ; using scikit-learn

标签 python scikit-learn tf-idf

from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer()
vectorizer = vectorizer.fit(word_data)
freq_term_mat = vectorizer.transform(word_data)

from sklearn.feature_extraction.text import TfidfTransformer

tfidf = TfidfTransformer(norm="l2")
tfidf = tfidf.fit(freq_term_mat)
Ttf_idf_matrix = tfidf.transform(freq_term_mat)

voc_words = Ttf_idf_matrix.getfeature_names()
print "The num of words = ",len(voc_words)

当我运行包含这段代码的程序时,出现以下错误:

Traceback (most recent call last): File "vectorize_text.py", line 87, in
voc_words = Ttf_idf_matrix.getfeature_names()
File "/home/farheen/anaconda/lib/python2.7/site- >packages/scipy/sparse/base.py", line 499, in getattr
raise AttributeError(attr + " not found")
AttributeError: get_feature_names not found

请给我一个解决方案。

最佳答案

我发现您的代码有两个问题。首先,您将 get_feature_names() 应用于矩阵输出,而不是矢量化器。您需要将其应用于矢量化器。其次,您不必要地将其分解为太多步骤。您可以使用 TfidfVectorizer.fit_transform() 在更小的空间内完成您想做的事情。试试这个:

from sklearn.feature_extraction.text import TfidfVectorizer

vectorizer = TfidfVectorizer()
transformed = vectorizer.fit_transform(word_data)
print "Num words:", len(vectorizer.get_feature_names())

关于python - 属性错误 : getfeature_names not found ; using scikit-learn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31633128/

相关文章:

python - 这两种为 sklearn 分类器过滤 Pandas 数据帧的方法有什么区别?

python - MultinomialNB - 理论与实践

apache-spark - Spark HashingTF 的工作原理

elasticsearch - 理解elasticsearch查询分数解释

python - 使用 sklearn 如何计算文档和查询之间的 tf-idf 余弦相似度?

python - 替换 Pandas DataFrame 列中超过 n 个连续值

python - scikit-learn/Gaussian Process 不是尺度不变的

python - 中止 python 交互式控制台的评估

Python JSON 解码器错误,请求内容中存在 unicode 字符

python获取linux文件不可变属性