Python 3.x 使用CountVectorizer的fit_变换错误

Python 3.x 使用CountVectorizer的fit_变换错误,python-3.x,scikit-learn,countvectorizer,Python 3.x,Scikit Learn,Countvectorizer,所以我有一个数据帧X,它看起来像这样: X.head() 0 My wife took me here on my birthday for breakf... 1 I have no idea why some people give bad review... 3 Rosie, Dakota, and I LOVE Chaparral Dog Park!!... 4 General Manager Scott Petello is a

所以我有一个数据帧
X
,它看起来像这样:

X.head()

    0    My wife took me here on my birthday for breakf...
    1    I have no idea why some people give bad review...
    3    Rosie, Dakota, and I LOVE Chaparral Dog Park!!...
    4    General Manager Scott Petello is a good egg!!!...
    6    Drop what you're doing and drive here. After I...
    Name: text, dtype: object
然后呢,

from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer()
X = cv.fit_transform(X)
但我得到了这个错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-61-8ff79b91e317> in <module>()
----> 1 X = cv.fit_transform(X)

~/anaconda3/lib/python3.6/site-packages/sklearn/feature_extraction/text.py in fit_transform(self, raw_documents, y)
    867 
    868         vocabulary, X = self._count_vocab(raw_documents,
--> 869                                           self.fixed_vocabulary_)
    870 
    871         if self.binary:

~/anaconda3/lib/python3.6/site-packages/sklearn/feature_extraction/text.py in _count_vocab(self, raw_documents, fixed_vocab)
    790         for doc in raw_documents:
    791             feature_counter = {}
--> 792             for feature in analyze(doc):
    793                 try:
    794                     feature_idx = vocabulary[feature]

~/anaconda3/lib/python3.6/site-packages/sklearn/feature_extraction/text.py in <lambda>(doc)
    264 
    265             return lambda doc: self._word_ngrams(
--> 266                 tokenize(preprocess(self.decode(doc))), stop_words)
    267 
    268         else:

~/anaconda3/lib/python3.6/site-packages/sklearn/feature_extraction/text.py in <lambda>(x)
    230 
    231         if self.lowercase:
--> 232             return lambda x: strip_accents(x.lower())
    233         else:
    234             return strip_accents

~/anaconda3/lib/python3.6/site-packages/scipy/sparse/base.py in __getattr__(self, attr)
    574             return self.getnnz()
    575         else:
--> 576             raise AttributeError(attr + " not found")
    577 
    578     def transpose(self, axes=None, copy=False):

AttributeError: lower not found
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在()
---->1 X=cv.fit_变换(X)
~/anaconda3/lib/python3.6/site-packages/sklearn/feature\u extraction/text.py in fit\u transform(self,raw\u documents,y)
867
868词汇表,X=自我统计词汇表(原始文档,
-->869自我修正(词汇)
870
871如果self.binary:
~/anaconda3/lib/python3.6/site-packages/sklearn/feature\u extraction/text.py in\u count\u vocab(self、raw\u documents、fixed\u vocab)
790对于原始文档中的文档:
791特征_计数器={}
-->792用于分析中的功能(文档):
793尝试:
794 feature_idx=词汇[特征]
~/anaconda3/lib/python3.6/site-packages/sklearn/feature\u extraction/text.py in(doc)
264
265返回lambda文档:self.\u word\n rams(
-->266标记化(预处理(自解码(doc))、停止字)
267
268其他:
~/anaconda3/lib/python3.6/site-packages/sklearn/feature\u extraction/text.py in(x)
230
231如果self.lowercase:
-->232返回lambda x:strip_重音(x.lower())
233其他:
234返回带\u口音
~/anaconda3/lib/python3.6/site-packages/scipy/sparse/base.py in\uuuuu getattr\uuuuu(self,attr)
574返回self.getnnz()
575其他:
-->576提升属性错误(属性+“未找到”)
577
578 def转置(自,轴=无,复制=假):
AttributeError:找不到较低的值

不知道为什么。

即使数据框只有一列,也需要指定文本数据的列名

X_countMatrix = cv.fit_transform(X['text'])

因为CountVectorizer需要一个iterable作为输入,并且当您提供一个dataframe作为参数时,唯一迭代的就是列名。因此,即使您没有任何错误,这也是不正确的。幸运的是,你有一个错误,并有机会纠正它

即使数据框只有一列,也需要指定文本数据的列名

X_countMatrix = cv.fit_transform(X['text'])

因为CountVectorizer需要一个iterable作为输入,并且当您提供一个dataframe作为参数时,唯一迭代的就是列名。因此,即使您没有任何错误,这也是不正确的。幸运的是,你有一个错误,并有机会纠正它

您的数据框有更多的列还是只有一列?数据框只有一列由上面的句子组成。数字应为索引号。检查数据框的列类型,可能未识别为字符串。您的数据框是否有更多的列或只有一列?数据框只有一列包含上述句子。数字应该是索引号。检查数据帧列的类型,可能未识别为stringI see,但
X=yelp_class['text']
因此X已保存列文本的值,并且没有列名称“text”。因此,如果我键入
X['text']
我会得到一个错误。因此,键入
X=cv.fit\u transform(yelp\u类['text'])
解决了这个问题。谢谢你富有洞察力的回答,我明白了,但是
X=yelp_class['text']
因此X已经保存了列文本的值,并且没有列名称“text”。因此,如果我键入
X['text']
我会得到一个错误。因此,键入
X=cv.fit\u transform(yelp\u类['text'])
解决了这个问题。谢谢你富有洞察力的回答