我正在尝试使用此模型但我收到错误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))
我认为模型错了吗?还有其他方法吗?