Python 语言程序设计实验2021年秋”实验报告
挑战五 逻辑回归用于讽刺文本检测
一、实验目的及要求
- 实验目的
- 了解训练分类模型的基本原理;
- 掌握模型解释及模型改进流程;
- 熟悉讽刺文本检测的逻辑回归方法;
- 实验要求
- 根据实验题目编写好源程序;
- 对上机操作过程中可能出现的问题预先分析,确定调试步骤和测试方法;
- 输入一定数量的测试数据,对运行结果进行分性;
- 上机实验完成后,认真写出实验报告,对上机中出现的问题进行分析、总结;
二、实验环境(工具、配置等)
- 硬件要求:计算机一台
- 软件要求: Windows操作系统,本实验在AI studio上进行开发
三、实验内容(实验方案、实验步骤、设计思路等)
-
实验方案:本实验通过对文本的特征提取,并使用逻辑回归模型对所提取的特征进行建模,最后通过得到的逻辑回归模型预测最后结果的回归率。
-
实验步骤:
- 下载实验所需要的数据讽刺文本。
- 打开数据,观察并分析需要分析的数据的特点。包括数据的数量、列的数据类型等。
- 清洗数据,将主要内容缺失的数据删除。
- 观察数据中两种被标记样本的数量是否平衡。
- 进行数据可视化。这里使用词云进行数据可视化。
- 将实验数据划分为训练集与测试集。
- 提取训练集的文本特征并向量化。
- 建立逻辑回归模型。
- 数据准确性检测的。
-
设计思路:
-
首先,了解逻辑回归的模型,词袋模型以及特征向量化的方法以及作用;
-
然后使用:
train_test_split
,将train_df['comment']
数据按照默认比例划分为训练集和测试集; -
接下来:以comment为依据清除缺少数据的整条数据,使用
TfidfVectorizer
进行特征提取 -
再接着用
LogisticRegression
建立逻辑回归模型,训练并通过accuracy_score
得到相关的结果; -
最后改进模型,通过
commnet
和subreddit
双指标进行训练模型
-
四、实验结果
- 实现结果截图
图一:讽刺文本数据的表头以及前10行数据
图二:数据列的信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ke5TQPZH-1638516456877)(https://dn-simplecloud.shiyanlou.com/courses/uid1550954-20211201-1638299332053)]
图三:以label为依据对数据进行分类并查看数量
图四:以comment长度为依据使用log1p函数平滑化后画出对应数量的直方图
图五:讽刺文本词云
图六:非讽刺文本词云
图七:各子板块讽刺评论数量排序
图八:调整参数之后形成的训练结果
图九:应用 plot_confusion_matrix 绘制出测试数据原始标签和预测标签类别的混淆矩阵
图十:查看特征值的权重
图十一:采用混合comment和subreddit混合特征的预测结果
- 遇到的问题及解决的方法
- 问题
- 对模型的各项参数的作用不了解。
- 原有参数得到的结果准确率是否能通过调整参数得到改进
- 解决方案
- 通过上网查找相关的模型讲解更加深入了解模型参数的作用
- 通改变逻辑模型的参数以及特征值的
max_features
参数,使得最后的结果有小范围的提升
- 问题
五、附源程序
下载数据
!wget -nc "http://labfile.oss.aliyuncs.com/courses/1283/train-balanced-sarcasm.csv.zip"
!unzip -o "train-balanced-sarcasm.csv.zip"
将数据转化为panda 的 DataFragme数据表
import pandas as pd
train_df = pd.read_csv('train-balanced-sarcasm.csv')
# 查看一下各个列的属性,看了之后会发现有数据中是没有comment,这些都属于是无效数据
train_df.info()
# 顺便查看一下数据表格的前10行数据
train_df.head(10)
# 删除缺失comment的数据
train_df.dropna(subset=['comment'], inplace=True)
train_df['label'].value_counts()