电影评论情感分析:使用朴素贝叶斯模型实现 95% 以上准确率
本代码使用朴素贝叶斯模型对电影评论进行情感分析,旨在预测评论的情感倾向(正面或负面)。代码使用 Python 编写,并在 JupyterLab 环境中运行,并包含以下步骤:
- 数据加载: 从
train.csv和test.csv文件中加载训练集和测试集数据,每个数据集包含 25000 条数据。 - 数据预处理: 使用
CountVectorizer将文本评论转换为词频矩阵,并使用train_test_split将训练集进一步划分为训练集和验证集。 - 模型训练: 使用
MultinomialNB训练朴素贝叶斯模型,并使用验证集评估模型性能。 - 模型优化: 调整模型参数,直到模型在验证集上的准确率超过 95%。
- 预测: 使用训练好的模型对测试集进行预测,并生成预测结果文件
prediction.csv,其中包含测试集评论的 ID 和预测的标签。
代码如下:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('test.csv')
train_text, val_text, train_label, val_label = train_test_split(train_data['review'], train_data['label'], test_size=0.2, random_state=42)
vectorizer = CountVectorizer(stop_words='english')
train_counts = vectorizer.fit_transform(train_text)
val_counts = vectorizer.transform(val_text)
clf = MultinomialNB()
clf.fit(train_counts, train_label)
val_pred = clf.predict(val_counts)
print('Accuracy:', accuracy_score(val_label, val_pred))
test_counts = vectorizer.transform(test_data['review'])
test_pred = clf.predict(test_counts)
result = pd.DataFrame({'id': test_data['id'], 'label': test_pred})
result.to_csv('prediction.csv', index=False)
本代码旨在提供一个基本框架,用户可以根据自己的需求进行调整和优化。例如,可以尝试使用其他模型或特征工程方法来进一步提高预测准确率。
原文地址: https://www.cveoy.top/t/topic/oiqY 著作权归作者所有。请勿转载和采集!