【问题标题】:Why the Accuracy Score is Zero in Sentiment Analysis为什么情绪分析中的准确性分数为零
【发布时间】:2021-06-30 10:19:41
【问题描述】:

训练数据包含大约 20000 行标题:id, sentiment, text

我将情绪映射如下:

df.sentiment= df.sentiment.map({"Neutral": 1, "Negative":0, "Positive":2 })

在我拥有clean text pre-processing 之后,我使用Logistic Regression 如下:

XTR, XTST, YTR, YTST= train_test_split(df.text, df.sentiment, test_size =.2, random_state=100)
lg= LogisticRegression(max_iter=20000)
pp = make_pipeline(TfidfVectorizer(),lg)
pg= {'logisticregression__C': [0.01, 0.1, 1, 10, 100]}
m= GridSearchCV(pipe, pg, cv=5)
m.fit(XTR,YTR)

pr= m.predict(XTST)
print(f"Accuracy: {accuracy_score(YTST, pr):.2f}")
print(classification_report(YTST, pr))

Output 如下:

    Accuracy 0.59
              precision    recall  f1-score   support

           0       0.00      0.00      0.00       686
           1       0.59      1.00      0.74      2374
           2       0.00      0.00      0.00       940

    accuracy                           0.59      4000
   macro avg       0.20      0.33      0.25      4000
weighted avg       0.35      0.59      0.44      4000

为什么 Negative: 0Positive: 2 都得到 0.00 ?请帮忙

【问题讨论】:

    标签: python-3.x pandas scikit-learn logistic-regression sentiment-analysis


    【解决方案1】:

    发生这种情况是因为逻辑回归模型将每一行预测为中性。

    所以中性精度 = 2374/4000 = 0.59

    正数精度 = 0/4000 = 0

    负数精度 = 0/4000 = 0

    此外,您在 X_train 上取出预测,而您必须在 X_test 上进行预测

    pr= m.predict(XTS)
    print(f"Accuracy: {accuracy_score(YTST, pr):.2f}")
    print(classification_report(YTST, pr))
    

    【讨论】:

    • 对如何修复有任何帮助吗?
    • 为什么要这样做?请问我的错误是什么?
    • 尝试一些其他模型,因为逻辑回归根本无法预测情绪。尝试基于树的模型,看看是否适合您。
    • 当我在不同的数据集上使用它时,它工作得很好,但是当我制作更高的数据集时它没有工作?有什么关系吗?如果你能帮忙解决,我很感激。我认为错误在参数GridSearchCV中的pg which is param_grid
    • 没有问题。您问题的原始答案是该模型将所有内容预测为中性,因此负数和正数的准确度得分为 0。您唯一能做的就是优化逻辑回归模型或训练新模型,例如基于树的模型。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-08-03
    • 2019-10-06
    • 2020-07-24
    • 2021-10-10
    • 2013-02-02
    • 2017-05-11
    • 2015-10-31
    • 2018-08-11
    相关资源
    最近更新 更多