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


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(最近一次调用):文件"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
raise AttributeError(attr + " not found")
属性错误: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())
from sklearn.feature_extraction.text import TfidfVectorizer
TfIdfer = TfidfVectorizer(stop_words = 'english')
TfIdfer.fit_transform(word_data).toarray()
names = TfIdfer.get_feature_names()

不是get_feature_names()吗?在'get'后面加上下划线。

另外,我不确定你想做什么,但是get_feature_names是一个方法,仅适用于*Vectorizer类,而不是TfidTransformer。也许你想要TfidVectorizer ?

相关内容

  • 没有找到相关文章

最新更新