为啥情绪分析中的准确性分数为零
Posted
技术标签:
【中文标题】为啥情绪分析中的准确性分数为零【英文标题】: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: 0
和 Positive: 2
都得到 0.00
?请帮忙
【问题讨论】:
【参考方案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。您唯一能做的就是优化逻辑回归模型或训练新模型,例如基于树的模型。谢谢以上是关于为啥情绪分析中的准确性分数为零的主要内容,如果未能解决你的问题,请参考以下文章