基于逻辑回归的讽刺文本检测

Python 语言程序设计实验2021年秋”实验报告

挑战五 逻辑回归用于讽刺文本检测
一、实验目的及要求
  1. 实验目的
    1. 了解训练分类模型的基本原理;
    2. 掌握模型解释及模型改进流程;
    3. 熟悉讽刺文本检测的逻辑回归方法;
  2. 实验要求
    1. 根据实验题目编写好源程序;
    2. 对上机操作过程中可能出现的问题预先分析,确定调试步骤和测试方法;
    3. 输入一定数量的测试数据,对运行结果进行分性;
    4. 上机实验完成后,认真写出实验报告,对上机中出现的问题进行分析、总结;
二、实验环境(工具、配置等)
  1. 硬件要求:计算机一台
  2. 软件要求: Windows操作系统,本实验在AI studio上进行开发
三、实验内容(实验方案、实验步骤、设计思路等)
  1. 实验方案:本实验通过对文本的特征提取,并使用逻辑回归模型对所提取的特征进行建模,最后通过得到的逻辑回归模型预测最后结果的回归率。

  2. 实验步骤:

    1. 下载实验所需要的数据讽刺文本
    2. 打开数据,观察并分析需要分析的数据的特点。包括数据的数量、列的数据类型等。
    3. 清洗数据,将主要内容缺失的数据删除。
    4. 观察数据中两种被标记样本的数量是否平衡。
    5. 进行数据可视化。这里使用词云进行数据可视化。
    6. 将实验数据划分为训练集与测试集。
    7. 提取训练集的文本特征并向量化。
    8. 建立逻辑回归模型。
    9. 数据准确性检测的。
  3. 设计思路:

    1. 首先,了解逻辑回归的模型,词袋模型以及特征向量化的方法以及作用;

    2. 然后使用:train_test_split,将train_df['comment']数据按照默认比例划分为训练集和测试集;

    3. 接下来:以comment为依据清除缺少数据的整条数据,使用TfidfVectorizer进行特征提取

    4. 再接着用LogisticRegression建立逻辑回归模型,训练并通过accuracy_score得到相关的结果;

    5. 最后改进模型,通过commnetsubreddit双指标进行训练模型

四、实验结果
  1. 实现结果截图
    讽刺文本数据的表头以及前10行数据

图一:讽刺文本数据的表头以及前10行数据

数据列的信息

图二:数据列的信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ke5TQPZH-1638516456877)(https://dn-simplecloud.shiyanlou.com/courses/uid1550954-20211201-1638299332053)]

图三:以label为依据对数据进行分类并查看数量

以comment长度为依据使用log1p函数平滑化后画出对应数量的直方图

图四:以comment长度为依据使用log1p函数平滑化后画出对应数量的直方图

讽刺文本词云

图五:讽刺文本词云

非讽刺文本词云

图六:非讽刺文本词云

各子板块讽刺评论数量排序

图七:各子板块讽刺评论数量排序

调整参数之后形成的训练结果

图八:调整参数之后形成的训练结果

应用 plot_confusion_matrix 绘制出测试数据原始标签和预测标签类别的混淆矩阵

图九:应用 plot_confusion_matrix 绘制出测试数据原始标签和预测标签类别的混淆矩阵

查看特征值的权重

图十:查看特征值的权重

采用混合comment和subreddit混合特征的预测结果

图十一:采用混合comment和subreddit混合特征的预测结果

  1. 遇到的问题及解决的方法
    1. 问题
      1. 对模型的各项参数的作用不了解。
      2. 原有参数得到的结果准确率是否能通过调整参数得到改进
    2. 解决方案
      1. 通过上网查找相关的模型讲解更加深入了解模型参数的作用
      2. 通改变逻辑模型的参数以及特征值的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()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值