Coggle 30 Days of ML (23年7月)任务二:数据可视化

Coggle 30 Days of ML (23年7月)任务二:数据可视化

任务二:对数据集字符进行可视化,统计标签和字符分布

  • 说明:在这个任务中,需要使用Pandas库对数据集的字符进行可视化,并统计数据集中的标签和字符的分布情况,以便更好地理解数据集。
  • 实践步骤:
    1. 使用Pandas库读取和加载数据集。
    2. 使用Pandas的可视化功能,如柱状图或饼图,对数据集的字符进行可视化展示。
    3. 使用Pandas的统计功能,如value_counts()方法,统计数据集中的标签和字符的分布情况。

数据读取

与任务一相同,首先利用Pandas库读取和加载数据集

train_data = pd.read_csv('ChatGPT/train.csv')
test_data = pd.read_csv('ChatGPT/test.csv')

数据可视化

接下来进行数据可视化,name字段是顺序是无意义的,所以我们主要是看有关于label字段和content字段的信息

在数据中,我发现有一个比较奇怪的地方,在content字段中,每一个数字都是占4位,以空格为分隔,为了方便操作,我先将其转为数字的数组,“ 0”也变成“0”,把左右两边的空格去掉,方便后续进行统计,统计得到数据如图所示

在这里插入图片描述

接下来我首先统计了一下content字段的数字列表长度,发现大部分长度实际上都是200,只有少部分长度不是200

train_data['char_count'] = train_data['content'].apply(lambda x:len(x.split(' ')))
print(train_data['char_count'].value_counts())# 绘制字符数量分布柱状图
train_data['char_count'].plot(kind='hist', bins=30, rwidth=0.8)
plt.xlabel('Character Count')
plt.ylabel('Frequency')
plt.title('Distribution of Character Counts')
plt.show()
200    13956
176        3
150        3
1          2
188        2
181        2
198        2
184        2
193        2
167        2
177        2
187        2
166        2
81         1
197        1
180        1
196        1
160        1
134        1
199        1
130        1
102        1
142        1
172        1
173        1
171        1
185        1
195        1
154        1
186        1
161        1
Name: char_count, dtype: int64

在这里插入图片描述

处于好奇心,我对这一部分长度不是200的进行筛选,查看有什么关系

train_data[train_data['char_count'] != 200]['label'].value_counts()
1    30
0    14
Name: label, dtype: int64

对于整体的数据来说,几乎大部分都是200的长度,另外不同的数据里面,大部分都是标签为1的数据,所以在这种情况下,数据更可能是gpt生产的

标签分布可视化

接下里对标签分布进行可视化,从结果可以看出,大部分的数据分布额都是Label为0的,数据的比例大概是5:1,所以存在一部分样本不平衡的情况,可以后续进行改进。

# 统计标签分布
label_counts = train_data['label'].value_counts()
print(label_counts)
# 绘制标签分布条形图
plt.bar(label_counts.index, label_counts.values)
plt.xlabel('Label')
plt.ylabel('Count')
plt.title('Label Distribution')# 添加标签名称
label_names = ['Label 0', 'Label 1']  # 用实际的标签名称替换这些示例名称
plt.xticks(label_counts.index, label_names)plt.show()
0    11836
1     2164
Name: label, dtype: int64

在这里插入图片描述

字符分布统计

接下来统计每一个content中的数字的分布,查看出现最多的50个,如下图所示,可以看到3125这个数字出现过很多次,也可以猜测这是一个主语等,后续可以对其进行分析

# 获取字符数量分布数据
char_distribution = train_data['content'].str.split(' ', expand=True).stack().value_counts()# 绘制前50个字符数量分布柱状图
char_distribution[:50].plot(kind='bar', figsize=(12, 6))
plt.xlabel('Character')
plt.ylabel('Frequency')
plt.title('Character Distribution (Top 50)')
plt.show() 

在这里插入图片描述

为了查看不同标签数据的分布,我也分别进行筛选查看字符分布统计

Label为0

# 获取字符数量分布数据
char_distribution = train_data[train_data['label']==0]['content'].str.split(' ', expand=True).stack().value_counts()# 绘制前50个字符数量分布柱状图
char_distribution[:50].plot(kind='bar', figsize=(12, 6))
plt.xlabel('Character')
plt.ylabel('Frequency')
plt.title('Character Distribution (Top 50) Label = 0')
plt.show() 

在这里插入图片描述

Label为1

# 获取字符数量分布数据
char_distribution = train_data[train_data['label']==1]['content'].str.split(' ', expand=True).stack().value_counts()# 绘制前50个字符数量分布柱状图
char_distribution[:50].plot(kind='bar', figsize=(12, 6))
plt.xlabel('Character')
plt.ylabel('Frequency')
plt.title('Character Distribution (Top 50) Label = 1')
plt.show() 

在这里插入图片描述

从结果可以看出,label不同的时候,整体的分布在top5的分布差异不大,但是在后续,似乎有不同,可能是因为数据量大小原因,后续可以进行探究和学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20583.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[PyTorch][chapter 44][时间序列表示方法4]

前言: 训练复杂度 OE*T*Q 参数 全称 E 迭代次数 Number of the training epochs T数据集大小 Number of the words in the training set Q 模型计算复杂度 Model computational complexity E,T 一般都认为相同,所以这里面主要讨论Q,模…

驱动day6

驱动程序 #include <linux/init.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_irq.h> #include <linux/of_gpio.h> #include <linux/platform_device.h> #include <linux/mod_devicetable.h> #include …

LayUI 实现二级导航栏

目录 实现步骤&#xff1a; 1. 分析数据库 2. 构建数据源 2.1 编写实体类 2.2 编写节点实体类 2.3 构建BuildTree节点结构方法类 2.4 编写dao类 2.5 编写数据Acntion控制类 3. 前台准备 3.1 配置mvc.xml文件 3.2 页面编写 3.3 运行效果 实现步骤&#xff1a; 1. 分…

Linux系统使用(超详细)

目录 Linux操作系统简介 Linux和windows区别 Linux常见命令 Linux目录结构 Linux命令提示符 常用命令 ls cd pwd touch cat echo mkdir rm cp mv vim vim的基本使用 grep netstat Linux面试题 Linux操作系统简介 Linux操作系统是和windows操作系统是并列…

在线试用Stable Diffusion生成可爱的图片

文章目录 一、 Stable Diffusion 模型在线使用地址&#xff1a;二、模型相关版本和参数配置&#xff1a;三、图片生成提示词与反向提示词&#xff1a;提示词1提示词2提示词3提示词4提示词5 一、 Stable Diffusion 模型在线使用地址&#xff1a; https://inscode.csdn.net/insc…

centos7 环境下部署 nacos单机模式

1、官网下载 nacos 官网地址&#xff1a;home 去github上下载nacos-server。我下载的是 nacos-server-1.4.1.tar.gz 2、安装 nacos 下载完成后&#xff0c;将安装包上传到 centos 创建 nacos 目录&#xff08;安装位置任意&#xff09; mkdir -p /usr/local/nacos解压 nac…

实战打靶集锦-021-glasgowsmile

提示&#xff1a;本文记录了博主的一次曲折的打靶经历。 目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 手工访问4.2 目录枚举4.3 手工探查4.4 搜索EXP4.5 joomlascan4.6 用户猜测与密码爆破4.7 构建反弹shell 5. 提权5.1 优化shell5.2 枚举系统信息5.3 探查/etc/pass…

第24章:事务基础知识

一、数据库事务Transactions 1.为什么要使用事务 事务可以让数据库保持一致性&#xff0c;通过事务的机制恢复到某个时间点&#xff0c;即使系统崩溃数据库修改的数据不会丢失。 2.存储引擎支持事务的情况 命令: show engines; 只有InnoDB支持事务 3.事务基本概念 事务&a…

【Distributed】分布式ELK日志文件分析系统(一)

文章目录 一、ELK 概述1. 为什么要使用 ELK2. 完整日志系统基本特征3. ELK 简介3.1 ElasticSearch&#xff08;ES&#xff09;3.2 Kiabana3.3 Logstash3.4 其它组件Filebeat缓存/消息队列Fluentd 4. ELK 的工作原理5. Linux 系统内核日志消息的优先级别 二、 部署 ELK 集群服务…

JAVA开发(JAVA视频监控接口相关)

一、背景 最近在做视频监控接口相关的开发&#xff0c;需要调用视频的接口获取直播地址&#xff0c;回放地址&#xff0c;然后集成到web里查看。 二、涉及的接口 1、获取卡口的id 2、通过卡口id获取通道&#xff08;设备的id&#xff09; 3、通过设备的id获取到直播地址 4…

密码学入门——HMAC

文章目录 一、什么是HMAC二、HMAC的步骤 一、什么是HMAC HMAC是一种使用单向散列函数来构造消息认证码的方法(RFC2104)&#xff0c;其中 HMAC的H就是Hash的意思。 HMAC 中所使用的单向散列函数并不仅限于一种&#xff0c;任何高强度的单向散列函数都可以被用于HMAC&#xff0…

Java028——Runtime 类

一、Runtime 类介绍 Runtime 类是JDK 提供的运行时类&#xff0c;该类为 Java 程序提供了与当前运行环境相连接的一个通道,Java 程序可以利用该类对当前的运行环境执行一些简单的操作。 二、Runtime 对象的创建 Runtime 类对象不能使用 new 关键字创建&#xff0c;只能通过 …