我的文本分类是否存在过拟合的问题?

时间:2019-05-19 11:19:55

标签: python scikit-learn nlp text-classification countvectorizer

我正在用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

重要提示

  1. 我的模型失败的样本是来自twitter的新推文。
  2. 对埃及,海湾和马格里比语数据集进行了手动标注。
  3. hijazi数据集是根据以下条件从Twitter使用twitter API获取的:地理位置,user_location和关键字(特定于hijazi方言)。我这样做是为了尽可能减少噪声,因为这些推文不是手动标记的。

0 个答案:

没有答案