Я пытаюсь соответствовать этой модели, но я получаю ошибку AttributeError: 'list' object has no attribute 'lower'
.Я знаю, что lower
можно применить только к str, но я не могу понять, как решить эту проблему.
X и Y - двоичные векторы для каждого текста в обучающем и тестовом наборе.Это списки, содержащие целые числа 0 и 1.
Так, например, X и Y могут выглядеть так:
X = [[1, 1, 1, 0, 0, 0], [0, 0, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, ], [1, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
Y = ['pos', 'pos', 'pos', 'neg', 'neg', 'neg', 'neg', 'neg']
Это мой код:
Y = ["pos"] * len(train_pos_vec) + ["neg"] * len(train_neg_vec)
X = train_pos_vec + train_neg_vec
text_clf = Pipeline([('vect', CountVectorizer(analyzer='word',
ngram_range=(1, 1),
stop_words='english')),
('tfidf', TfidfTransformer()),
('clf', MultinomialNB(alpha=.01))])
text_clf = text_clf.fit(X, Y)
predicted = text_clf.predict(X_test)
print("Unigram Accuracy : {}% \n".format(np.mean(predicted == Y_test) * 100))
Я правильно подхожу к модели?Есть ли другой способ?