我正在尝试做一个MNB分类器的情感分析。我有一个数据集,其中包括文本和标签在以下结构的标签是从1-5。使用huggingface情感数据集。
feature label
"I feel good" 1
我可以只使用我的train数据集和sklearn的train_test_split函数来完成它。但是当我尝试使用我的数据集来完成它时,出现了一个问题,即
ValueError: X has 3427 features, but MultinomialNB is expecting 10052 features as input.
在以下代码的最后一行(predict)
cv = CountVectorizer(stop_words='english')
val_ppd_df = cv.fit_transform(val_df["lemmatized"])
val_labels = np.array(val_df['label'])
train_labels = np.array(train_df['label'])
mnb = MultinomialNB()
mnb.fit(train_ppd_df,train_labels)
predictions_NB = mnb.predict(val_ppd_df)
我所做的是对我的验证数据集做每一个操作(标记化,词干化,词形化),但是我没有做test_train split,我只是拆分了train和validation数据集的标签。我检查了train_test_split和val_ppd_df的结果,我注意到它们是不同的。
<16000x10052 sparse matrix of type '<class 'numpy.int64'>'
with 128627 stored elements in Compressed Sparse Row format>
<2000x3427 sparse matrix of type '<class 'numpy.int64'>'
with 15853 stored elements in Compressed Sparse Row format>
我该如何处理这种差异呢?互联网上的每个示例都使用train_test_split,我的示例也可以,但我想先在验证上做这个,然后在不同的测试数据集上做,而不仅仅是在train数据集上。
1条答案
按热度按时间tkqqtvp11#
fit_transform
应仅应用于训练数据。对于验证和测试:应用transform
方法。MRE,带有Hugging Face - SetFit/emotion: