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'])
解决了这个问题。谢谢你富有洞察力的回答