属性错误:找不到 getfeature_names ;使用 scikit-learn

问题描述 投票:0回答:4
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)

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

回溯(最近一次调用最后一次): 文件“vectorize_text.py”,第 87 行,位于
voc_words = Ttf_idf_matrix.getfeature_names()
文件“/home/farheen/anaconda/lib/python2.7/site->packages/scipy/sparse/base.py”,第 499 行,位于 getattr
引发 AttributeError(attr + " 未找到")
属性错误:找不到 get_feature_names

请给我建议一个解决方案。

python scikit-learn tf-idf
4个回答
10
投票

我发现您的代码有两个问题。首先,您将 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())

3
投票
from sklearn.feature_extraction.text import TfidfVectorizer
TfIdfer = TfidfVectorizer(stop_words = 'english')
TfIdfer.fit_transform(word_data).toarray()
names = TfIdfer.get_feature_names()

2
投票

不是

get_feature_names()
吗,即。 “get”后带有下划线。

另外,我不确定你想做什么,但 get_feature_names 是一种仅对 *Vectorizer 类有效的方法,对 TfidTransformer 无效。 也许您想要 TfidVectorizer?


0
投票

get_feature_names() --> get_feature_names_out()!!!!!!

© www.soinside.com 2019 - 2024. All rights reserved.