我正在用4种方言进行方言文本分类。我将数据集(大小为20K)分为75%的训练和25%的测试。当我用朴素的贝叶斯训练它们,并在测试数据集上进行测试时,我获得了90%的准确性。但是,当我使用大小为400条推文的新数据集进行验证时,我的准确性为63%。您认为跌落是由于过度拟合造成的吗?如果您需要其他任何信息,请告诉我。
这是我的代码:
from sklearn.pipeline import Pipeline
text_clf = Pipeline([
('vect', CountVectorizer()),
('clf', MultinomialNB())])
text_clf.fit(X_train, y_train)
pred=text_clf.predict(validate['tweets'])
accuracy_score(validate['dialect'],pred)
0.63
这些是我对朴素贝叶斯和countVectorizer的设置。我没有为朴素贝叶斯添加任何超参数。我不确定要添加什么,否则它将产生任何明显的变化。
这是混乱矩阵:
array([[150, 4, 44, 1],
[ 7, 67, 105, 3],
[ 12, 10, 110, 0],
[ 0, 0, 0, 0]], dtype=int64)
用于培训
precision recall f1-score support
Egypt 0.96 0.98 0.97 4039
Gulf 0.99 0.97 0.98 4456
Hijazi 0.95 0.97 0.96 4905
Maghribi 1.00 0.97 0.98 3014
micro avg 0.97 0.97 0.97 16414
macro avg 0.97 0.97 0.97 16414
weighted avg 0.97 0.97 0.97 16414
accuracy: 0.97
进行测试
precision recall f1-score support
Egypt 0.90 0.92 0.91 1321
Gulf 0.92 0.88 0.90 1533
Hijazi 0.84 0.92 0.88 1603
Maghribi 0.98 0.87 0.92 1015
micro avg 0.90 0.90 0.90 5472
macro avg 0.91 0.90 0.90 5472
weighted avg 0.90 0.90 0.90 5472
accuracy: 0.89
获取新数据
precision recall f1-score support
Egypt 0.89 0.75 0.82 199
Gulf 0.83 0.37 0.51 182
Hijazi 0.42 0.83 0.56 132
Maghribi 0.00 0.00 0.00 0
micro avg 0.64 0.64 0.64 513
macro avg 0.53 0.49 0.47 513
weighted avg 0.75 0.64 0.64 513
accuracy: 0.63
重要提示: