Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过删除错误[AttributeError:';numpy.ndarray';对象没有属性';lower';]来在管道中训练GaussianNB_Python_Numpy_Scikit Learn - Fatal编程技术网

Python 如何通过删除错误[AttributeError:';numpy.ndarray';对象没有属性';lower';]来在管道中训练GaussianNB

Python 如何通过删除错误[AttributeError:';numpy.ndarray';对象没有属性';lower';]来在管道中训练GaussianNB,python,numpy,scikit-learn,Python,Numpy,Scikit Learn,这是我使用计数矢量器和tfidftransformer的数据,也使用GaussianNB,但我在这段代码中得到了错误。请告诉我正确的语法 train = [('I love this sandwich.','pos'), ('This is an amazing place!', 'pos'), ('I feel very good about these beers.', 'pos'), ('This is my best work.', 'pos'),

这是我使用计数矢量器和tfidftransformer的数据,也使用GaussianNB,但我在这段代码中得到了错误。请告诉我正确的语法

train = [('I love this sandwich.','pos'),
     ('This is an amazing place!', 'pos'),
     ('I feel very good about these beers.', 'pos'),
     ('This is my best work.', 'pos'),
     ('What an awesome view', 'pos'),
     ('I do not like this restaurant', 'neg'),
     ('I am tired of this stuff.', 'neg'),
     ("I can't deal with this.", 'neg'),
     ('He is my sworn enemy!.', 'neg'),
     ('My boss is horrible.', 'neg')
    ]
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer()

text_train_cv = cv.fit_transform(list(zip(*train))[0])
print(text_train_cv.toarray())

from sklearn.feature_extraction.text import TfidfTransformer
tfidf_trans = TfidfTransformer()

text_train_tfidf = tfidf_trans.fit_transform(text_train_cv)
print(text_train_tfidf.toarray())

from sklearn.naive_bayes import GaussianNB
clf = GaussianNB().fit(text_train_tfidf.toarray(), list(zip(*train))[1])

text_clf = Pipeline([('vect',CountVectorizer(stop_words='english')), 
('tfidf',TfidfTransformer()),('clf',GaussianNB(priors=None))])
text_clf = text_clf.fit(text_train_tfidf.toarray() , list(zip(*train))[1])
print(text_clf)
这给了我一个错误: AttributeError:'numpy.ndarray'对象没有属性'lower'

Do

clf = GaussianNB().fit(text_train_tfidf.toarray() , list(zip(*train))[1])
GaussianNB不支持将稀疏矩阵作为X的输入,但默认情况下TfidfTransformer将返回稀疏矩阵。因此出现了错误

toarray()
会将其转换为稠密。但请注意,这将导致内存使用量的大幅增加

更新:

使用管道时,需要提供在管道中传递给transformer的数据。在这种情况下,这是
列表(zip(*train))[0]

text_clf = text_clf.fit(list(zip(*train))[0] , list(zip(*train))[1])
这将解决您的第一个错误。但由于稀疏矩阵,您仍然会得到一个错误。请参见此答案以解决该问题:-

Do

GaussianNB不支持将稀疏矩阵作为X的输入,但默认情况下TfidfTransformer将返回稀疏矩阵。因此出现了错误

toarray()
会将其转换为稠密。但请注意,这将导致内存使用量的大幅增加

更新:

使用管道时,需要提供在管道中传递给transformer的数据。在这种情况下,这是
列表(zip(*train))[0]

text_clf = text_clf.fit(list(zip(*train))[0] , list(zip(*train))[1])
这将解决您的第一个错误。但由于稀疏矩阵,您仍然会得到一个错误。请参阅此答案以解决以下问题:-

经常用于文本分类任务,并且它确实支持稀疏矩阵作为输入数据集

PS对更大的微粒使用密集矩阵,您可能会得到
MemoryError

所以试试这个:

from sklearn.naive_bayes import MultinomialNB

clf = MultinomialNB().fit(text_train_tfidf , list(zip(*train))[1])
通常用于文本分类任务,它支持稀疏矩阵作为输入数据集

PS对更大的微粒使用密集矩阵,您可能会得到
MemoryError

所以试试这个:

from sklearn.naive_bayes import MultinomialNB

clf = MultinomialNB().fit(text_train_tfidf , list(zip(*train))[1])

@SikandarAli,如果有帮助,请接受答案。先生,如果我使用管道,那么它会给我错误[AttributeError:'numpy.ndarray'对象没有属性'lower',请帮助我摆脱它。@SikandarAli请编辑问题以添加管道代码/sir,让我知道语法。先生,我已经应用了该语法。它需要密集的数据才能传递。那么我是否应该使用dense transformer和其他工具一起工作?@SikandarAli,如果有帮助,请接受答案。先生,如果我使用管道,那么它会给我错误[AttributeError:'numpy.ndarray'对象没有属性'lower']请帮我解决。@SikandarAli请编辑问题以添加管道代码/sir请告诉我语法。sir我已经应用了该语法。它需要密集的数据才能传递。所以我应该使用密集变压器和其他变压器一起工作吗?谢谢你,先生。我已经试过那个分类器了,但我想试一下GaussianNBthank先生。我已经尝试过那个分类器,但我想尝试高斯B