AttributeError:找不到getfeature_names;使用scikit-learn

时间:2015-07-26 02:41:35

标签: 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)

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

  

追踪(最近一次通话):     文件" 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 +"未找到")
  AttributeError:找不到get_feature_names

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

不是get_feature_names(),即。在'get'之后用下划线。

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

答案 2 :(得分:1)

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