【发布时间】:2018-11-07 08:23:42
【问题描述】:
问题:
我很困惑为什么我们使用适合我们的训练数据的 CountVectorizer 来转换我们的测试数据以进行词袋分类。
为什么我们不创建一个新的 CountVectorizer 并将测试数据拟合到此并让分类器在测试 CountVectorizer 上进行预测?
看这里:How to standardize the bag of words for train and test?
摘自答案:
LabeledWords=pd.DataFrame(columns=['word','label'])
LabeledWords.append({'word':'Church','label':'Religion'} )
vectorizer = CountVectorizer()
Xtrain,yTrain=vectorizer.fit_transform(LabeledWords['word']).toarray(),vectorizer.fit_transform(LabeledWords['label']).toarray()
forest = RandomForestClassifier(n_estimators = 100)
clf=forest.fit(Xtrain,yTrain)
for each_word,label in Preprocessed_list:
test_featuresX.append(vectorizer.transform(each_word),toarray())
test_featuresY.append(label.toarray())
clf.score(test_featuresX,test_featuresY)
我们可以看到用户创建了一个 CountVectorizer 并将其拟合到训练数据中。然后将分类器拟合到这个 CountVectorizer。之后,用户只需使用适合训练数据的 CountVectorizer 转换测试数据,并将其输入分类器。这是为什么呢?
我想要完成的工作: 我正在尝试实现视觉词袋。它使用相同的概念,但我不确定应该如何创建训练集和测试集以进行分类。
【问题讨论】:
-
因为您不想使用训练模型中没有的词。
标签: python machine-learning nlp