设计思路
- 设置环境
- 导入必要的库,包括
pandas
、re
、matplotlib
、seaborn
、sklearn
、和imblearn
等。 - 配置 matplotlib 以支持中文字符的显示。
2.数据读取和清洗
- 从 Excel 文件
data11.xlsx
中读取数据。 - 定义并应用数据清洗函数,去除标点符号和特殊字符。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 贝叶斯 ” 获取,拿来即用,只回复文字哦。👈👈👈
- 数据预处理
- 提取评论内容 (
X
) 和情感标签 (y
)。 - 将数据集分割为训练集和测试集。
4.特征提取
- 使用 TF-IDF 向量化文本数据,转换为数值特征。
5.数据平衡处理
- 使用 SMOTE 方法对训练数据进行过采样,以平衡类分布。
6.模型训练
- 训练朴素贝叶斯分类模型。
7.模型评估
- 预测测试集的情感标签。
- 计算并输出模型的准确率和分类报告。
- 保存预测值和真实值到 CSV 文件。
- 可视化
- 绘制真实值与预测值的散点图。
- 绘制混淆矩阵,以可视化分类性能。
代码块分析
1. 设置环境
import pandas as pd import re import matplotlib.pyplot as plt import seaborn as sns from sklearn.model_selection import train_test_split from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import accuracy_score, classification_report, confusion_matrix from imblearn.over_sampling import SMOTE plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
分析:
- 导入必要的库,用于数据处理、模型训练和评估、以及可视化。
- 配置 matplotlib 以支持中文字符的显示。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 贝叶斯 ” 获取,拿来即用,只回复文字哦。👈👈👈
2. 数据读取和清洗
data = pd.read_excel('data11.xlsx', engine='openpyxl') def clean_text(text): # 代码略(至少十行)... # 代码略(至少十行)... data['clean_comments'] = data['comments'].apply(clean_text)
分析:
- 读取 Excel 数据文件。
- 定义数据清洗函数,去除评论中的标点符号和数字。
- 应用清洗函数到评论数据列。
3. 数据预处理
X = data['clean_comments'] y = data['sentiment'] # 代码略(至少十行)... # 代码略(至少十行)... ``` **分析**: - 提取清洗后的评论内容和情感标签。 - 使用 `train_test_split` 方法将数据集分割为训练集和测试集。 #### 4. 特征提取 ```python vectorizer = TfidfVectorizer(max_features=5000) X_train_vectorized = vectorizer.fit_transform(X_train) # 代码略(至少十行)... # 代码略(至少十行)...
分析:
- 使用 TF-IDF 向量化文本数据,将文本转换为数值特征。
- 训练集使用
fit_transform
方法,测试集使用transform
方法。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 贝叶斯 ” 获取,拿来即用,只回复文字哦。👈👈👈
5. 数据平衡处理
# 代码略(至少十行)... # 代码略(至少十行)...
分析:
- 使用 SMOTE 方法对训练数据进行过采样,平衡正负类的样本数量。
6. 模型训练
model = MultinomialNB() # 代码略(至少十行)... # 代码略(至少十行)...
分析:
- 创建朴素贝叶斯分类模型实例。
- 使用平衡后的训练数据进行模型训练。
7. 模型评估
y_pred = model.predict(X_test_vectorized) # 代码略(至少十行)... # 代码略(至少十行)... print(f'准确率: {accuracy}') print('分类报告:') print(report) result_df = pd.DataFrame({'真实值': y_test, '预测值': y_pred}) result_df.to_csv('predictions.csv', index=False)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 贝叶斯 ” 获取,拿来即用,只回复文字哦。👈👈👈
分析:
- 使用测试数据进行预测。
- 计算并输出模型的准确率和分类报告。
- 将预测结果与真实标签保存到 CSV 文件。
8. 可视化
# 绘制散点图 plt.figure(figsize=(12, 6)) # 代码略(至少十行)... # 代码略(至少十行)... plt.legend() plt.grid(True) plt.show() # 绘制混淆矩阵 conf_matrix = confusion_matrix(y_test, y_pred) plt.figure(figsize=(8, 6)) # 代码略(至少十行)... # 代码略(至少十行)... plt.ylabel('真实值') plt.title('混淆矩阵') plt.show()
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 贝叶斯 ” 获取,拿来即用,只回复文字哦。👈👈👈
分析:
- 绘制真实值与预测值的散点图,直观展示分类结果。
- 计算混淆矩阵,并绘制热力图,以可视化分类性能。
本代码实现了从数据读取、清洗、预处理、特征提取、数据平衡处理、模型训练、模型评估到结果可视化的完整流程。通过这些步骤,能够有效地对文本数据进行情感分析,并直观地展示模型的分类效果。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 贝叶斯 ” 获取,拿来即用,只回复文字哦。👈👈👈