Я пытаюсь запустить классификатор для некоторых данных обзора фильма.Данные уже были разделены на reviews_train.txt
и reviews_test.txt
.Затем я загрузил данные и разделил каждый на рецензию и метку (положительную (0) или отрицательную (1)), а затем векторизовал эти данные.Вот мой код:
from sklearn import tree
from sklearn.metrics import accuracy_score
from sklearn.feature_extraction.text import TfidfVectorizer
#read the reviews and their polarities from a given file
def loadData(fname):
reviews=[]
labels=[]
f=open(fname)
for line in f:
review,rating=line.strip().split('\t')
reviews.append(review.lower())
labels.append(int(rating))
f.close()
return reviews,labels
rev_train,labels_train=loadData('reviews_train.txt')
rev_test,labels_test=loadData('reviews_test.txt')
#vectorizing the input
vectorizer = TfidfVectorizer(ngram_range=(1,2))
vectors_train = vectorizer.fit_transform(rev_train)
vectors_test = vectorizer.fit_transform(rev_test)
clf = tree.DecisionTreeClassifier()
clf = clf.fit(vectors_train, labels_train)
#prediction
pred=clf.predict(vectors_test)
#print accuracy
print (accuracy_score(pred,labels_test))
Однако я продолжаю получать эту ошибку:
ValueError: Number of features of the model must match the input.
Model n_features is 118686 and input n_features is 34169
Я довольно новичок в Python, поэтому заранее прошу прощения, если это простое исправление.