gpt4 book ai didi

python - 值错误 : Number of features of the model must match the input (sklearn)

转载 作者:行者123 更新时间:2023-11-28 18:07:00 28 4
gpt4 key购买 nike

我正在尝试对一些电影评论数据运行分类器。数据已被分成 reviews_train.txtreviews_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 的新手,所以如果这是一个简单的修复,我提前道歉。

最佳答案

问题就在这里:

vectorizer = TfidfVectorizer(ngram_range=(1,2))
vectors_train = vectorizer.fit_transform(rev_train)
vectors_test = vectorizer.fit_transform(rev_test)

您对训练数据和测试数据都调用了 fit_transformfit_transform 同时创建存储在 vectorizer 中的模型,然后使用该模型创建向量。因为你调用了两次,所以发生的事情是首先创建 vectors_train 并生成输出特征向量,然后你用测试数据第二次调用 fit_transform 覆盖模型.与测试数据相比,当您训练具有不同长度特征的决策树时,这会导致向量大小的差异。

执行测试时,您必须使用用于训练的同一模型转换数据。因此,不要对测试数据调用 fit_transform - 只需使用 transform而不是使用已经创建的模型:

vectorizer = TfidfVectorizer(ngram_range=(1,2))
vectors_train = vectorizer.fit_transform(rev_train)
vectors_test = vectorizer.transform(rev_test) # Change here

关于python - 值错误 : Number of features of the model must match the input (sklearn),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52958577/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com